2013-01-21 88 views
1

我在Nvidia的Nsight中有一個小項目,它爲我創建了makefiles。我想使用一些SSE指令,並想用gcc而不是nvcc編譯項目中的cpp文件。如何在使用Nsight Eclipse Edition時使用gcc進行編譯?

有沒有辦法配置Nsight來做到這一點,或者我必須手動編寫Makefile?

編輯:.cu文件應該與nvcc當然編譯。

回答

1

您應該能夠在CU文件中使用GCC SSE指令 - NVCC使用您的平臺編譯器編譯所有主機代碼。

如果你仍然想使用GCC,你有兩個選擇:

  1. 創建兩個項目 - 一個是NVCC和使用GCC編譯的另一個常規可執行文件的項目編制了靜態庫項目。然後您可以設置Nsight將可執行文件鏈接到您的庫。 (你也可以使用NVCC作爲可執行文件,GCC作爲庫)
  2. 正如@Eric提到的,你可以創建一個「Makefile Project」並手動編寫makefile。
+1

另外我只注意到nvcc完全「轉發」cpp文件到gcc。 (我注意到,因爲錯誤消息的格式發生了變化) – Hannes

+0

@Eugene但是,如何將我的「平臺編譯器」從GCC更改爲ICC(Intel C++)?你能幫我解決我的問題嗎? http://stackoverflow.com/questions/23133335/how-can-i-create-the-project-in-eclipse-nsight-which-use-both-intel-c-and-cuda – Alex

+0

@Alex應該有一個在CUDA項目屬性中暴露的「ccbin」NVCC標誌(我不記得屬性樹中的確切路徑 - 就像Build-> Settings)。只需指出你的icc編譯器。 – Eugene

1

要在Nsight中使用gcc,您必須創建makefile項目並手動編寫makefile。

或者,你可以使用nvcc編譯你的.cpp/.c文件。要添加不能被nvcc識別的額外編譯器選項(只能由gcc識別),應該在nvcc選項-Xcompiler前加上前綴。

使用nvcc的一個副作用是你的.cpp程序需要運行libcudart.so,即使它並不真的需要。