Почему я получаю 128 команд / блоков потоков и 96 потоков в каждой команде / блоках потоков, используя целевую команду #pragma omp для параллельного распределения в OpenMP? - PullRequest
0 голосов
/ 17 апреля 2020

Я выполняю этот код на Ubuntu 18.04, компилятор clang / llvm с графическим процессором Nvidia GTX 1070

#pragma omp target data map(to: A,B) map(from: C)
{
   #pragma omp target teams distribute
   for(int n=0; n<Row; n++)
   {
   int team_id= omp_get_team_num();
   #pragma omp parallel for default(shared) schedule(auto)
   for(int j = 0; j <Col; j++)
   {
       int thread_id = omp_get_thread_num();
           printf("Iteration= c[ %d ][ %d ], Team=%d, Thread=%d\n",n, j, team_id, thread_id);
       C[n][j] = A[n][j] + B[n][j];
   }

   }
}

в приведенном выше коде, максимальное значение команды равно 127, а поток равен 95

флаги компиляции: clang ++ -fopenmp -fopenmp-target = nvptx64-nvidia-cuda -Xopenmp-target -march = sm_61 -Wall -O3 отладка. cpp -o отладка

...