2010-07-09 114 views
14

它有可能在CUDA文件(不在內核代碼中)使用openMP pragmas?在cuda主機代碼中使用openMP?

我將結合gpu和cpu計算。但是nvvc編譯器以「無法找到未知選項'openmp'」失敗,如果我使用openmp選項(linux下)鏈接porgram

解決方法是僅在c/C++文件中使用openMP-statments。

回答

14

我剛剛發現這個

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

第25頁說:

用gcc: - #包括omp.h

添加-fopenmp標誌

隨着nvcc,這應該是-Xcompiler -fopenmp,因爲這需要直接傳遞給gcc -Xcompiler直接將標誌傳遞給主機編譯器

在鏈接階段添加-lgomp標誌。

我還沒有嘗試過...

+0

小心應對和粘貼論據。如果仔細觀察-Xcompiler -fopenmp上的破折號與命令行破折號不同。 – Tristan 2013-10-04 22:07:06

+0

破折號現在已修復。 – 2014-05-23 19:44:05

0

從NVIDIA的論壇發現了Visual Studio中的解決方案:

的「/ openmp'標誌添加額外的C++中的選項CUDA建立規則。我將在稍後嘗試Linux解決方案。

2

我嘗試在「其他編譯器選項」中編寫參數,但它沒有工作。

我做什麼了Visual Studio 2010和CUDA 4.2:

在項目屬性 - >配置屬性 - > CUDA C/C++ - >命令行 - >附加選項: -Xcompiler 「/ OpenMP的」

這導致生成的構建命令中有兩個-Xcompiler參數,但沒有導致任何問題並且成功運行。