openMP之二parallel Construct

来源:互联网 发布:谈谈你对数据库的认识 编辑:程序博客网 时间:2024/04/30 20:47

一、指令格式


该指令主要用于创建一组线程来执行指定的任务


二、代码

#include <iostream>#include <omp.h>#define ARRAY_SIZE 100using namespace std;void setNumber(int ids[], int startPos, int nElement,int value){for(int i = 0; i < nElement; ++i){ids[startPos + i] = value;}}void ParallelizeSetNumber(int ids[], int size){int nElementPerThread;int startPos;int threadId;int nThread;#pragma omp parallel default(shared) private(nElementPerThread,startPos,threadId,nThread){nThread = omp_get_num_threads();threadId = omp_get_thread_num();nElementPerThread = size / nThread;startPos = threadId * nElementPerThread;if(threadId == nThread - 1)nElementPerThread = size - startPos;setNumber(ids, startPos, nElementPerThread, threadId);}}int main(){int ids[ARRAY_SIZE];//init idsfor(auto& e : ids)e = -1;ParallelizeSetNumber(ids, ARRAY_SIZE);//print ids;for(auto e : ids)cout << e << " ";cout << endl;cin.get();return 0;}

其中default与private用于控制变量的属性,在本例中,default用于设置变量的属性为shared,而private则指定明哪些变量是私有的。


三、运行结果


0 0
原创粉丝点击