C 用于循环并行化的Openmp
我有一个算法,在这个算法中我创建了一组结构(即结构数组)。我希望每个小组都在一个线程中工作。我给出的代码如下。下面的for循环C 用于循环并行化的Openmp,c,openmp,C,Openmp,我有一个算法,在这个算法中我创建了一组结构(即结构数组)。我希望每个小组都在一个线程中工作。我给出的代码如下。下面的for循环#pragma omp for,i wanti=0应在一个线程中执行,i=1应在另一个线程中执行,依此类推。如果我做得正确,请帮助并建议我 #pragma omp parallel shared(min,sgb,div,i) private(th_id) omp_set_num_threads(4); { th_id=omp_get_thread_num();
#pragma omp for
,i wanti=0
应在一个线程中执行,i=1应在另一个线程中执行,依此类推。如果我做得正确,请帮助并建议我
#pragma omp parallel shared(min,sgb,div,i) private(th_id)
omp_set_num_threads(4);
{
th_id=omp_get_thread_num();
printf("Thread %d\n",th_id);
scanf("%c",&ch);
#pragma omp for schedule(static,CHUNKSIZE)
for(i=0;i<div;i++)
{
sgb[i]=pso(sgb[i],kmax,c1,c2);
min[i]=sgb[i].gbest;
printf("in distribute gbest=%f x=%f y=%f index=%d\n",sgb[i].gbest,sgb[i].bestp[0],sgb[i].bestp[1],sgb[i].index);
}
#pragma omp barrier
//fclose(fp);
m=min[0];
for(j=0;j<div;j++)
{
printf("after barrier gbest=%f x=%f y=%f\n",sgb[j].gbest,sgb[j].bestp[0],sgb[j].bestp[1]);
if(m>min[j])
{
m=min[j];
k=j;
}
}
}
#pragma omp并行共享(min、sgb、div、i)专用(THU id)
omp_设置_数量_线程(4);
{
th_id=omp_get_thread_num();
printf(“线程%d\n”,th\u id);
scanf(“%c”和“ch”);
#计划的pragma omp(静态、CHUNKSIZE)
对于(i=0;我OpenMP告诉你什么?你不认为在你的情况下使用pthreads
会更简单吗?@Eddy\u Em:但我不知道如何用pthreads编程。@重要的是:我知道OpenMP文档中说abt pragma omp的意思。但是你能帮我摆脱疑问/问题吗?例如man pthread\u创建代码>:它包括一个简单的示例代码!