2010-07-09 3 views
14

È possibile utilizzare i pragmi di openMP nei file CUDA (non nel codice del kernel)?Utilizzo di openMP nel codice host cuda?

Unirò il calcolo gpu e cpu. Ma il compilatore nvvc fallisce con "impossibile trovare l'opzione Unknown 'openmp'", se sto collegando il porgram con un'opzione openmp (sotto linux)

Una soluzione è di usare openMP-statments solo nei file c/C++.

risposta

14

ho appena trovato questo

http://www.cse.buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf

Page 25 dice:

con GCC: - # include omp.h

Aggiungere il -fopenmp bandiera

Con nvcc, questo dovrebbe essere -Xcompiler -fopenmp in quanto deve essere passato direttamente a gcc -Xcompiler passa bandiere direttamente per ospitare compilatore

Aggiungi -lgomp bandiera durante la fase di collegamento.

non l'ho ancora provato ...

+0

Fare attenzione a copiare e incollare gli argomenti. Se si guarda da vicino i trattini su -Xcompiler -fopenmp sono diversi dai trattini della riga di comando. – Tristan

+0

I trattini sono ora riparati. –

0

La soluzione per Visual Studio trovato da nvidia-forum:

aggiungere il '/ openmp'-bandiera alle Extra Options C++ in CUDA costruire regole. Proverò la soluzione di Linux in seguito.

2

Ho provato a scrivere il parametro in "Opzioni aggiuntive del compilatore" ma non ha funzionato.

Quello che ho fatto per Visual Studio 2010 e CUDA 4.2:

nel progetto Proprietà -> Proprietà di configurazione -> CUDA C/C++ -> Command Line -> Opzioni aggiuntive: -Xcompiler "/ OpenMP"

Ciò ha provocato due parametri -Xcompiler nel comando di generazione risultante, ma non ha causato alcun problema e ha funzionato correttamente.