2012-07-27 13 views
6

Per impostazione predefinita, la direttiva OpenMP:OMP: più thread rispetto al numero di processori?

opm_get_num_threads fornisce il numero di thread equivalenti a processori/core.

Ho una macchina a 8 core, quindi mi dà 8 thread. È il massimo? Posso ottenere più thread di 8, se ne specifichi deliberatamente più di 8?

Grazie

risposta

7

È possibile impostare come tanti fili come si desidera con:

int threads = 16; 
omp_set_num_threads(threads); 

http://msdn.microsoft.com/en-US/library/e16bady3%28v=vs.80%29

ma essere sicuri siete a conoscenza degli svantaggi dell'utilizzo di più thread che ci sono core logici nel sistema.

+2

Cura di condividere quali sono effettivamente gli svantaggi piuttosto che solo vagamente alludendo a loro? –

+4

@LexiR C'è un sovraccarico quando si ha a che fare con i thread: scheduling, switch di contesto, contesa della cache, ecc ... Non è detto che non sia mai meglio usare più thread dei core logici. Ma è utile sapere cosa può accadere se viene usato in modo improprio. – Mysticial

+2

Perché correggere il numero di thread nel codice? Che ne dici della buona vecchia variabile d'ambiente 'OMP_NUM_THREADS'? –

Problemi correlati