Следующая небольшая программа (online version) пытается вычислить площадь 64 на 64 квадрата путем рекурсивного деления на четыре квадрата, пока наименьший квадрат не имеет единичной длины (вряд ли оптимальной). Но по какой-то причине программа зависает. Что я делаю неправильно?Простая прикладная программа OpenMP на основе задач
#include <iostream>
unsigned compute(unsigned length)
{
if(length == 1) return length * length;
unsigned a[4] , area = 0 , len = length/2;
for(unsigned i = 0; i < 4; ++i)
{
#pragma omp task
{
a[i] = compute(len);
}
#pragma omp single
{
area += a[i];
}
}
return area;
}
int main()
{
unsigned area , length = 64;
#pragma omp parallel
{
area = compute(length);
}
std::cout << area << std::endl;
}
Вы отлаживали свою программу? – user743414
К сожалению, я этого не сделал. У меня возникли трудности с настройкой параллельного отладчика Eclipse (PTP). – Olumide