Реализация барьера OpenMP на MacOS

Я играл с openmp и использовал барьерную конструкцию для выполнения простого кода:

#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 и получил такой результат: вывод приведенного выше кода

На выходе до барьера были выполнены 4 нити, но после барьера 4 раза выполнялась только одна нить, но в соответствии с барьером после барьера также должны выполняться 4 разных нити. Может ли кто-нибудь помочь мне решить эту проблему. Заранее спасибо.

0 ответов

Другие вопросы по тегам