我认为这些步骤非常简单。我对 VS2010 Express 进行了全新安装,然后为 Windows 7 安装了 CUDA 5.0。
我选择了CUDA 5.0 示例包中的VectorAdd示例代码。默认情况下,我的项目设置为针对 Win32 和调试进行编译。
我必须做的唯一更改是选择 Project...Properties...CUDA C/C++...Command Line
然后我在属性对话框底部的文本框中
添加了-Xptxas -v
选项,如下所示:Addtional Options
![VS2010项目属性对话框](https://i.stack.imgur.com/vTjzA.png)
(如果您看不清楚上图,请右键单击图片,然后单击“将图片另存为...”并将其保存到硬盘,然后从那里打开。)
之后,按Apply
和OK
。然后点击F7
构建项目,你应该在Output
窗口中看到这样的输出(你的输出窗口应该在你编译时自动显示“构建”输出:
1>------ Rebuild All started: Project: vectorAdd, Configuration: Debug Win32 -----
1>
1> C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\0_Simple\vectorAdd>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -ccbin "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin" -I"../../common/inc" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -Xptxas -v -g -DWIN32 -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MTd " -o "Win32/Debug/vectorAdd.cu.obj" "C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\0_Simple\vectorAdd\vectorAdd.cu" -clean
1> Compiling CUDA source file vectorAdd.cu...
1>
1> C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\0_Simple\vectorAdd>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_35,code=\"sm_35,compute_35\" --use-local-env --cl-version 2010 -ccbin "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin" -I"../../common/inc" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -Xptxas -v -g -DWIN32 -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MTd " -o "Win32/Debug/vectorAdd.cu.obj" "C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\0_Simple\vectorAdd\vectorAdd.cu"
1> ptxas : info : 0 bytes gmem
1> ptxas : info : Compiling entry function '_Z9vectorAddPKfS0_Pfi' for 'sm_10'
1> ptxas : info : Used 4 registers, 32 bytes smem, 4 bytes cmem[1]
1> ptxas : info : 0 bytes gmem
1> ptxas : info : Compiling entry function '_Z9vectorAddPKfS0_Pfi' for 'sm_20'
1> ptxas : info : Function properties for _Z9vectorAddPKfS0_Pfi
1> 0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
1> ptxas : info : Used 8 registers, 48 bytes cmem[0]
1> ptxas : info : 0 bytes gmem
1> ptxas : info : Compiling entry function '_Z9vectorAddPKfS0_Pfi' for 'sm_30'
1> ptxas : info : Function properties for _Z9vectorAddPKfS0_Pfi
1> 0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
1> ptxas : info : Used 8 registers, 336 bytes cmem[0]
1> ptxas : info : 0 bytes gmem
1> ptxas : info : Compiling entry function '_Z9vectorAddPKfS0_Pfi' for 'sm_35'
1> ptxas : info : Function properties for _Z9vectorAddPKfS0_Pfi
1> 0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
1> ptxas : info : Used 8 registers, 336 bytes cmem[0]
1> tmpxft_00001438_00000000-39_vectorAdd.compute_10.ii
1> vectorAdd_vs2010.vcxproj -> C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\0_Simple\vectorAdd\../../bin/win32/Debug/vectorAdd.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
请注意,您是否看到任何实际溢出是您正在编译的代码的函数。这段代码没有溢出,但如果有的话,编译器会报告它。
您不需要该-abi=no
选项即可查看编译器的溢出结果。
请注意,单个文件选项可以覆盖项目设置(右键单击您的项目源文件之一,然后单击属性),但如果您没有修改任何这些,它们不应覆盖您的项目设置。
可能还有其他项目设置也会对此产生干扰,因此我的建议是尝试使用您尚未修改的 CUDA 示例代码之一,并使用上述步骤作为健全性检查,以证明您可以使其正常工作先有。然后在你的项目上试试。
确保您正在修改与您实际构建的项目相对应的设置(例如 Win32/x64、Release/Debug)。
编辑: 上述案例使用 CUDA 5.0。原始问题没有指定 CUDA 版本。我发现在 Visual Studio 中使用以前版本的 CUDA,命令行“附加选项”方法似乎不起作用,但使用选择/下拉框指定详细 PTXAS 输出(是)确实有效。
EDIT2:好的,我进行了 VS2010 的全新安装,然后进行了 CUDA 4.2 工具包的全新安装,并且能够重现该问题。我使用以下步骤来查看实际的 ptxas 详细输出:
- 在工具...设置中选择“专家设置”
- 在 Project...Properties...Configuration Properties...CUDA C/C++...Device 中将 ptxas 详细下拉框更改为“Yes (--ptxas-options=-v)”
- 在 Tools...Options...Projects and Solutions...Build and Run 中将“MSBuild project build output verbosity”设置从“Minimal”更改为“Normal”
- 然后选择 Build...Rebuild Solution,您应该会在构建输出窗口中看到 ptxas 详细输出。