终于可以用nisight单机调试CUDA程序了,根据这里nsight支持的列表看来,带optimus的本子刚好适合CUDA debug呢。 https://developer.nvidia.com/nsight-visual-studio-edition-requirements, 终于让我喜欢optimus一次了。linux下的驱动问题似乎都还没解决呢。
cuda-gdb调试实在麻烦,有了nsight就舒服多了。不过刚开始我装好nsight发现我自己的项目无法调试,断点没用,但是运行nsight例子程序却没问题,发现原来是使用的CUDA runtime版本不对,我的工程建的是5.0版本,而nsight目前只支持4.0,4.1,4.2吧,于是只好重新建立工程。
所以如果你装nsight之前已经装过高版本的CUDA toolkit, 可要注意一下。
以下转自:
一 安装Nsight2.0
选择:自定义安装,如果是用cuda4.0的,最好把安装选项里面关于CUDA 3.2 ruler之类的选项取消安装。我开始全部安装,发现安装后环境变量CUDA_PATH被改为CUDA toolkit 3.2的路径,而我已经卸载了CUDA3.2导致项目无法生成了,提示找不到.cu文件的编译器了之类的信息。只得重装CUDA tookit4.0和Nsight。
安装后最好查看一下你的环境变量CUDA_PATH指向哪里。方法使用“开始”菜单输入“cmd”回车,进入命令行窗口,输入 set cuda回车,会列出所有CUDA开头的环境变量的设置。
二 Nsight组成简介
双机调试:
Target:支持CUDA显卡,安装NVIDIA Parallel Nsight Monitor 2.0,运行CUDA程序。
安装Nsight 2.0需要的版本的驱动、不是越新越好。
启动Monitor,在选项里对话框里注意“WDDM TDR enabled” 选FALSE
Host:运行VS2010的机器。可以是任何显卡,安装NVIDIA Parallel Nsight Host
安装CUDA SDK 4.0、CUDA Toolkit 4.0 ,主要为了编译CUDA代码。本机如果不是N卡,只能生成程序,不能执行。如果是N卡程序,安装CUDA4.0需要的N卡
VS2010菜单会有Nsight菜单项,使用该菜单启动Debug
下面主要是关于单机调试的经验,双机设置比单机简单,设置方法基本一样。
三 单机调试
显卡需要:一个支持CUDA显卡,不接显示器,另外一个可以是任何GPU显卡,接显示器用来显示windows桌面。
1安装软件
(1).安装两个卡的显卡程序,注意CUDA卡的程序一定要安装Nsight 2.0需要的版本的驱动。
(2).安装CUDA Tookit 4.0 +CUDA SDK 4.0 + VS2010 配置使用(VAssistX之类的)参加另外一个帖子
(3). NVIDIA Parallel Nsight2.0 选自定义安装,见本文开头
如果两个都是N卡,准备用作CUDA运行的显卡不要接显示器,并且需要:
(1)使用NVIDA 控制面板、选择“Setup Multiple Displays”,在“Select the displays you want to use”框里,把准备用做CUDA运行的卡的复选框的钩取消。
(2).程序可能要设置程序到底在哪个卡上执行参考例子DeviceQueryDrv,),
2. 启动Monitor,打开选项界面, 在general选项里 : “WDDM TDR enabled” 选FALSE
在CUDA项目里, “Use this Moitor for CUDA attach”选True
3.关闭D3D加速
本地调试必须关闭D3D加速:“Disable D3D acceleration for WPF”,方法
(1)打开文件夹窗口.
(2)找到Nsight 2.0 Common 文件夹,具体如下:
(a) Win32系统下是:
X:\Program Files\NVIDIA Parallel Nsight 2.0\Common
(b) Win 64系统下是
X:\Program Files (x86)\NVIDIA Parallel Nsight 2.0\Common (我装的是Nsight 4.0,CUDA6.,此目录为D:\Program Files (x86)\NVIDIA Corporation\Nsight Visual Studio Edition 4.0\Host\Common)
注意X代表你的windows系统安装的盘符
(3)找到下面的文件,双击添加到注册表里。
DisableWpfHardwareAcceleration.reg
出现提示对话框,点“是(Y)”按钮
重新启动电脑。
4.调试,前面设置完毕,最好重启电脑。
(1)启动Moitor
启动后程序自动最小化任务栏托盘区,右击鼠标选“option”查看,确认
“WDDM TDR enabled” 选FALSE
”Use this Moitor for CUDA attach”选True
其它参数可以先不管,最小化Moitor
(2) 使用VS2010打开CUDA项目,可以是Nsight自带的例子,也可以是CUDA SDK4.0的例子
下面以template项目为例,该项目存放在CUDA SDK安装路径下的C\src目录里
打开template_kernel.cu文件,找到testKernel函数,在语句:
const unsigned int tid = threadIdx.x; 前使用VS2010工具设置断点,
(3) 选“解决方案配置”为Debug,平台是win32还是x64根据你的环境和需要。
项目如果没有生成,可以生成一遍或选“重新生成”,如果你以前生成正常,装了Nsight2.0无法生成项目了,可用参考本文开头部分。
点击VS2010菜单Nsight->Start CUDA Debugging” 启动debug,
注意不能使用VS2010的“调试->启动调试”启动debug,
程序开始执行,在执行语句const unsigned int tid = threadIdx.x 处会停下来,用户可以观察变量,这时可用VS2010的调试功能 用F11或F10单步执行。或者安F5继续执行。
注意:一个内核函数的断点只会进入1次,想进入某个特定线程可用使用VS设置条件断点。
调试期间可见Monitor会提示“connected debug xxx ”之类的提示,字符串里有你的机器的名字。或者打开Monitor界面也有类似的提示,表示Monitor当前已经和某个Host建立了连接。
如果Nsight->Start CUDA Debugging开始时出现可能红色错误提示,可能是某个配置不对,可以根据提示做相应修改。
阅读(2859) | 评论(0) | 转发(0) |