Ho già utilizzato OpenMP con i cicli "pragma omp for" e volevo provare ora i task OpenMP. Ma un semplice programma, che dovrebbe eseguire 2 attività parallele, non sembra funzionare. Ho frainteso l'uso dei compiti o cosa c'è di sbagliato qui?Le attività di gcc in openmp non funzionano
#include<iostream>
#include<omp.h>
//ubuntu 12.04 LTS, gcc 4.6.3
//g++ test_omp.cpp -fopenmp
int main()
{
#pragma omp parallel
{
#pragma omp single
{
#pragma omp task
{
while(true)
{
usleep(1e6);
#pragma omp critical (c_out)
std::cout<<"task1"<<std::endl;
}
}
#pragma omp task
{
while(true)
{
usleep(1e6);
#pragma omp critical (c_out)
std::cout<<"task2"<<std::endl;
}
}
}
}
}
L'output è: task1 task1 task1 .....
Così il secondo compito non è in esecuzione.
ho pensato un compito OpenMP è sempre una sorta di "uova" o "forchetta" e il filo che ha incontrato questa operazione continua il suo lavoro. Ma mi sbagliavo. – martin7743