在MacOS上实施OpenMP屏障

时间:2018-09-27 15:55:02

标签: c parallel-processing openmp barrier

我一直在玩openmp,并使用barrier结构执行简单的代码:

#include<stdio.h>
#include<omp.h>

int main() {
  int i = 0;
  int x[100];
  int tid;
  int y[100];
  int z[100];
  for(i=0;i<10;i++) x[i]==i;

  #pragma omp parallel
  {
    tid = omp_get_thread_num();
    y[tid]==x[tid]*2;
    printf("%d\n",tid);
    #pragma omp barrier
    printf("After Barrier%d\n",tid);
  }
}

我已经在MacOS上执行了这段代码,并得到了这样的结果: The output of the above code

在直到屏障的输出中,执行了4个线程,但是在屏障之后,仅一个线程被执行了4次,但是根据屏障之后的屏障,也应由4个不同的线程执行该步骤。谁能帮我解决这个问题。 预先谢谢你。

0 个答案:

没有答案