Domanda

C'è un modo per cambiare il tipo schedule in un ciclo pragma omp for, utilizzando una funzione in c? Stavo cercando di fare setenv("OMP_SCHEDULE", "guided", 1); prima della dichiarazione parallela, ma non sono completamente sicuro se funziona, dal momento che i tempi che ottengo dal mio codice sono molto simili. Quello che volevo fare è usare un ciclo for che cambia il tipo di pianificazione per confrontare i tempi, dando dynamic, auto, ecc. Come stringa nella funzione setenv.

È stato utile?

Soluzione

È possibile utilizzare la pianificazione (runtime) e impostare OMP_SCHEDULE.

Da https://computing.llnl.gov/tutorials/openmp/ < / P >.

.

Runtime La decisione di pianificazione è differita fino al runtime tramite la variabile di ambiente OMP_SCHEDULE. È illegale specificare una dimensione del blocco per questa clausola.

Lascia che citi solo Hristo Iiliev da quando lo ha già detto meglio qui OpenMP: per il programma

.

Poiché il codice precompilato potrebbe essere eseguito su varie piattaforme, sarebbe bello se l'utente finale può controllare la pianificazione. Ecco perché OpenMP fornisce la clausola speciale del programma (runtime). Con la pianificazione del runtime, il tipo viene preso dal contenuto della variabile di ambiente OMP_SCHEDULE. Ciò consente di testare diversi tipi di pianificazione senza ricompilazione dell'applicazione e consente anche all'utente finale di sintonizzarsi per la sua piattaforma.

Altri suggerimenti

Non c'è modo standard per farlo, ma se stai utilizzando la libreria Intel, è possibile utilizzare l'estensione kmp_set_defaults().Questo assume una stringa di opzioni separate da caratteri | e sovrascrive il comportamento OpenMP predefinito.Nel tuo esempio, kmp_set_defaults("OMP_SCHEDULE=guided") dovrebbe realizzare ciò che desideri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top