您的位置:首页 > 编程语言 > Java开发

Nsight Eclipse的使用方法

2013-12-12 08:58 204 查看
1. 打开night eclipse: 命令行输入night,会提示你选择工作目录,自己选即可。

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

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

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

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

4. 写完代码以后,右击工程名–> build Project ,生成makefile<Debug 目录下>以及bin<Binaries目录下>文件,如果有错误,会在底部,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函数表示的是:“这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock
tick)数”>,因为在程序中kernel函数是属于瞬间返回<according
to you guys>的,用clock是测不出时间的,但是是个函数总归要有执行过程,就是有执行时间的,这时候就看底下compute那一栏,这是在GPU上函数执行时间,这个时间时间上测试加速比的时候并未用到<”瞬间返回”>,但是通过stream一栏的时间轴,我们可以看出哪个函数在GPU上占据的时间更长,也就是说能看到程序的时间更多的耽误在了哪里。这个地方我个人理解的是,通过看runtime
driver API底下的这些时间轴,可以看到的是在GPU上各个函数的时间状况,而我们测试加速比的时候是用的runtime,
driverAPI上类似的时间,所以看底下的时间轴更多的是一个参考吧,给编程人员一个参考看看内核有没有改进处,看看流的执行成没成功。等等等等,这只是我个人理解,因为这一块一直不是很清楚,我就一直这么理解的。。。。。。

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

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

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

这部分暂搁置。

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

不过,早上说到的会报错问题,所以这个功能基本是不可用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: