Openmp for for循环并行化

时间:2013-07-01 07:48:15

标签: c openmp

我有一个算法,我在其中制作了一组结构(即结构数组)。我希望每个组都应该在一个线程中工作。我给出的代码如下。 #pragma omp for之后的for循环,我希望i=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;
        }
    }
}

0 个答案:

没有答案