2013-11-14 46 views
0

我正在製作一個3D應用程序插件,該插件使用該應用程序的SDKCUDA代碼編譯裏面的C++文件二進制文件在VS 2010

在正常情況下,「個人測試項目」,我單獨.CU文件,並進行了項目類型CUDA C/C++,和.cpp文件,項目類型C/C++編譯器

在這裏我要.cpp文件內整個代碼和編譯它沒有問題,

我也想使代碼(二進制),以便我可以隱藏ptx(或內核)

+0

您需要'.cu'擴展名才能使編譯器驅動程序'nvcc'攔截CUDA代碼。當您通過Visual Studio進行編譯時,您將在Debug或Release目錄中獲得一個可執行文件。 – JackOLantern

回答

1

這並不完全清楚您爲什麼要將CUDA代碼放在.cpp文件中。如果原因是由於您使用的SDK的某些要求而導致的,並且您不想使用nvcc,那麼這將不起作用。

如果你只想讓一個.cpp文件包含設備代碼,並經過nvcc,而不是直接到主機編譯器,你可以使用-x cu選項您nvcc編譯命令:

nvcc -x cu t264.cpp -o t264 

的上述命令將產生相同的可執行文件,就好像你已經做到了這一點:

nvcc t264.cu -o t264 

(假設t264.cut264.cpp是相同的文件)

如果你想去掉的PTX,你可以這樣進行編譯:

nvcc -gencode arch=compute_10,code=sm_10 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 .... 

這將告訴nvcc創建包含sm_10,sm_20,或sm_30設備可執行二進制文件fatbinary,但沒有PTX 。

相關問題