0
我正在製作一個3D應用程序插件,該插件使用該應用程序的SDKCUDA代碼編譯裏面的C++文件二進制文件在VS 2010
在正常情況下,「個人測試項目」,我單獨.CU文件,並進行了項目類型CUDA C/C++,和.cpp文件,項目類型C/C++編譯器
在這裏我要.cpp文件內整個代碼和編譯它沒有問題,
我也想使代碼(二進制),以便我可以隱藏ptx(或內核)
我正在製作一個3D應用程序插件,該插件使用該應用程序的SDKCUDA代碼編譯裏面的C++文件二進制文件在VS 2010
在正常情況下,「個人測試項目」,我單獨.CU文件,並進行了項目類型CUDA C/C++,和.cpp文件,項目類型C/C++編譯器
在這裏我要.cpp文件內整個代碼和編譯它沒有問題,
我也想使代碼(二進制),以便我可以隱藏ptx(或內核)
這並不完全清楚您爲什麼要將CUDA代碼放在.cpp文件中。如果原因是由於您使用的SDK的某些要求而導致的,並且您不想使用nvcc
,那麼這將不起作用。
如果你只想讓一個.cpp文件包含設備代碼,並經過nvcc
,而不是直接到主機編譯器,你可以使用-x cu
選項您nvcc
編譯命令:
nvcc -x cu t264.cpp -o t264
的上述命令將產生相同的可執行文件,就好像你已經做到了這一點:
nvcc t264.cu -o t264
(假設t264.cu
和t264.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 。
您需要'.cu'擴展名才能使編譯器驅動程序'nvcc'攔截CUDA代碼。當您通過Visual Studio進行編譯時,您將在Debug或Release目錄中獲得一個可執行文件。 – JackOLantern