1. 打开night eclipse: 命令行输入night,会提示你选择工作目录,自己选即可。
2. 在界面上方菜单栏:File -> New –> cuda C/C++ project:
可以选择新建空项目,标准运行时项目,还可以从样例程序中导入,以及新建C++的Thrust项目:
其余都是按照默认跳过即可。
3. 完成后在左侧Project栏里,添加新文件。
4. 写完代码以后,右击工程名–> build Project ,生成makefile
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函数测试得到的时间,
7. 关于Debug,与windows下面不同的是,linux下的nsight不仅可以在GPU代码加断点,也可以在CPU代码加断点,加断点方法与VS中差不多,双击左边那个边框,点击上面工具栏的甲虫图标:
F6单步跳过,F5单步跳入。
这边可以看变量的值。这一部分我了解的不多,单步跳到有关cuda的runtime函数时会报出:所有cuda设备函数都不能被debug.
这部分暂搁置。
8. 导入已有工程: File -> new ->makefile project with exsiting code.
不过,早上说到的会报错问题,所以这个功能基本是不可用的。