Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C++;VS2010中的文件_C++_Visual Studio 2010_Cuda - Fatal编程技术网

C++ 在C++;VS2010中的文件

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文件包含设备代码

我正在为3d应用程序制作一个插件,这个插件使用那个应用程序SDK

在正常情况下,“个人测试项目”中,我分离.cu文件并将其条目类型设置为CUDA C/C++,将.cpp文件设置为条目类型C/C++编译器

在这里,我希望整个代码都放在.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目录中获得一个可执行文件。