se uso annidati parallelo per cicli come questo:openMP nidificato parallelo per cicli vs parallelo interno per
#pragma omp parallel for schedule(dynamic,1)
for (int x = 0; x < x_max; ++x) {
#pragma omp parallel for schedule(dynamic,1)
for (int y = 0; y < y_max; ++y) {
//parallelize this code here
}
//IMPORTANT: no code in here
}
è questo equivale a:
for (int x = 0; x < x_max; ++x) {
#pragma omp parallel for schedule(dynamic,1)
for (int y = 0; y < y_max; ++y) {
//parallelize this code here
}
//IMPORTANT: no code in here
}
È il parallelo esterno per fare qualcosa di diverso creando un nuovo compito?
Sto usando VS2008 quindi non credo di poter usare il collasso, ho pensato di farlo nel modo in cui hai menzionato, ma speravo di non dover cambiare il codice in modo significativo. È per un raggio ray tracer quindi alcuni raggi primari possono richiedere fino a 10 volte più a lungo rispetto ad altri –
Apparentemente anche VS2010 supporta solo OpenMP 2.0. –
ok, l'ho implementato nel secondo modo, si spera che MS raggiunga finalmente ... –