Sto usando OpenMP per migliorare l'efficienza del programma sui loop.OpenMP: uso condizionale di #pragma
Ma recentemente ho scoperto che su piccoli loop l'uso di questa libreria diminuiva le prestazioni e che l'utilizzo del modo normale era migliore.
In effetti, mi piacerebbe usare openMP solo se una condizione è soddisfatta, il mio codice è
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
Ma quello che voglio fare è quello di disabilitare il #pragma se dimensioni è abbastanza piccolo vale a dire:
if (size > OMP_MIN_VALUE)
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
ma non funziona, il modo migliore è quello di scrivere il loop due volte, ma non voglio fare in quel modo ...
if (size > OMP_MIN_VALUE)
{
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
}
else
{
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
}
Qual è il modo migliore per farlo?
Ho usato #pragma omp parallelo per if (size> = OMP_MIN_VALUE) – Arthur