У меня проблема с распределением задач в OpenMP. У меня есть следующий код:OpenMP scheduler
#include <stdio.h>
#include <unistd.h>
int cnttotal = 0;
int cnt1 = 0, cnt2 = 0;
int main()
{
int i;
#pragma omp parallel
#pragma omp single nowait
for (i = 0; i < 60; i++) {
if (cnttotal < 1) {
cnttotal++;
#pragma omp task
{
#pragma omp atomic
cnt1++;
usleep(10);
cnttotal--;
}
} else {
#pragma omp task
{
#pragma omp atomic
cnt2++;
sleep(1);
}
}
}
printf("cnt1 = %d; cnt2 = %d\n", cnt1, cnt2);
return 0;
}
Что бы я не сделал, cnt1 = 1
, cnt2 = 59
. Я думаю, что проблема в планировщике OpenMP. Или есть что-то не поймать.
Пожалуйста, объясните, что вы хотите, чтобы ваш код выполнял и что конкретно ваш вопрос. Прямо сейчас, я понятия не имею, о чем вы спрашиваете ... – NoseKnowsAll