Das folgende kleine Programm (online version) versucht, die Fläche eines 64 x 64-Quadrats durch rekursives Aufteilen in vier Quadrate zu berechnen, bis das kleinste Quadrat die Einheitslänge hat (kaum optimal). Aber aus irgendeinem Grund hängt das Programm. Was mache ich falsch?Einfache aufgabenbasierte OpenMP-Anwendung hängt
#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;
}
Haben Sie Ihr Programm debugged? – user743414
Leider habe ich nicht. Ich habe Schwierigkeiten beim Einrichten des Eclipse-Parallel-Debuggers (PTP). – Olumide