C++ 在C++;VS2010中的文件
我正在为3d应用程序制作一个插件,这个插件使用那个应用程序SDK 在正常情况下,“个人测试项目”中,我分离.cu文件并将其条目类型设置为CUDA C/C++,将.cpp文件设置为条目类型C/C++编译器 在这里,我希望整个代码都放在.cpp文件中,并毫无问题地编译它C++ 在C++;VS2010中的文件,c++,visual-studio-2010,cuda,C++,Visual Studio 2010,Cuda,我正在为3d应用程序制作一个插件,这个插件使用那个应用程序SDK 在正常情况下,“个人测试项目”中,我分离.cu文件并将其条目类型设置为CUDA C/C++,将.cpp文件设置为条目类型C/C++编译器 在这里,我希望整个代码都放在.cpp文件中,并毫无问题地编译它 此外,我还想制作代码(二进制),以便隐藏ptx(或内核)不完全清楚为什么要将CUDA代码放在.cpp文件中。如果原因是由于您正在使用的SDK的某些要求,并且您不想使用nvcc,那么这将不起作用 如果您只想允许.cpp文件包含设备代码
此外,我还想制作代码(二进制),以便隐藏ptx(或内核)不完全清楚为什么要将CUDA代码放在.cpp文件中。如果原因是由于您正在使用的SDK的某些要求,并且您不想使用
nvcc
,那么这将不起作用
如果您只想允许.cpp文件包含设备代码并通过nvcc
而不是直接到主机编译器,您可以在nvcc
编译命令上使用-x cu
选项:
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 ....
这将告诉您创建一个fatbinary,该fatbinary包含sm_10、sm_20或sm_30设备的可执行二进制文件,但不包含PTX。您需要
.cu
扩展以使编译器驱动程序nvcc
拦截CUDA代码。当您通过VisualStudio编译时,您将在Debug或Release目录中获得一个可执行文件。