Nsight Eclipse的使用方法

1.      打开night eclipse: 命令行输入night,会提示你选择工作目录,自己选即可。

2.      在界面上方菜单栏:File -> New –> cuda C/C++ project:


可以选择新建空项目,标准运行时项目,还可以从样例程序中导入,以及新建C++的Thrust项目:


其余都是按照默认跳过即可。

3.      完成后在左侧Project栏里,添加新文件。


4.      写完代码以后,右击工程名–> build Project ,生成makefile以及bin文件,如果有错误,会在底部,Problems里面报出,同样在写程序的时候,会跟SQL似得会自动给你检测的,写错了可以随改正。


5.      然后右击工程名 -> Run As local c/c++ application,运行程序,结果会在下面打印


6.      Nsight可以直接用profiler查看函数的时间轴:


右击bin文件,选择profile as local C/C++ Application,就可以在新标签页中看profile的结果了。

其中:


runtime API一栏的时间轴,表示的是CPU端调用Cuda的runtime函数的时间,当然不包括kernel的时间。<其中有launch kernel的时间>。

同理,Driver API时间轴表示的是CPU调用cuda驱动函数的时间。

MemcpyHtoD MemcpyDtoH两行时间轴表示的是整个程序中,每次数据拷贝的时间,在下边属性栏里,可以看到调用的次数和时间值。

下面的compute栏,里面的函数是内核函数,前面的百分比表示的是各个内核函数在GPU上运算时占据的时间比重,谁的百分比大,表明谁计算的时间更长。

最下面的stream一栏,就是memcpy, memset以及内核函数在整个程序执行的过程中占据的时间。次序表面调用顺序。

各个关系是这样的<绝对个人理解,仅供参考,切勿当真>runtime driver API那两栏,其实类似于在程序语句中加入clock_t函数测试得到的时间,这个函数返回从开启这个程序进程程序中调用clock()函数时之间的CPU时钟计时单元(clock tick)数”>,因为在程序中kernel函数是属于瞬间返回的,用clock是测不出时间的,但是是个函数总归要有执行过程,就是有执行时间的,这时候就看底下compute那一栏,这是在GPU上函数执行时间,这个时间时间上测试加速比的时候并未用到<”瞬间返回”>,但是通过stream一栏的时间轴,我们可以看出哪个函数在GPU上占据的时间更长,也就是说能看到程序的时间更多的耽误在了哪里。这个地方我个人理解的是,通过看runtime driver API底下的这些时间轴,可以看到的是在GPU上各个函数的时间状况,而我们测试加速比的时候是用的runtime, driverAPI上类似的时间,所以看底下的时间轴更多的是一个参考吧,给编程人员一个参考看看内核有没有改进处,看看流的执行成没成功。等等等等,这只是我个人理解,因为这一块一直不是很清楚,我就一直这么理解的。。。。。。

7.    关于Debug,windows下面不同的是,linux下的nsight不仅可以在GPU代码加断点,也可以在CPU代码加断点,加断点方法与VS中差不多,双击左边那个边框,点击上面工具栏的甲虫图标:


F6单步跳过,F5单步跳入。


这边可以看变量的值。这一部分我了解的不多,单步跳到有关cudaruntime函数时会报出:所有cuda设备函数都不能被debug.

这部分暂搁置。

8.    导入已有工程: File -> new  ->makefile project with exsiting code. 

不过,早上说到的会报错问题,所以这个功能基本是不可用的。

你可能感兴趣的:(CUDA相关)