减少数组中每个元素的OpenMP

时间:2017-04-16 18:04:25

标签: c parallel-processing openmp

学习openMP

    // array b

    #pragma omp parallel for // reduction(&&: b[i])?
    for (i=2; i<=N; i++)
    {
      // create local array for each thread
      int *localb;
      localb = (int*) malloc(N*sizeof(int));
      memcpy(localb, b, N*sizeof(localb));

        #pragma omp for private(j)
        for (j=i+1; j<=N; j++)
        {
            if (j%i == 0)
                localb[j] = 0;
        }

是否可以使用reduction(&amp;&amp ;: b [i])减少全局数组b中的每个元素,以便b [i] = localb [j]&amp;&amp;双]?所有数据都是0或1;如果j可被i整除,则为0,否则为1。

1 个答案:

答案 0 :(得分:2)

是的,自Ope​​nMP 4.5起,标准直接支持减少数组,只需通过reduction(&&: b)

如果您的实施尚不支持,请参阅older answers about that

相关问题