Ubuntu使用Visual Profiler
配置java环境
1 | //卸载OpenJDK |
使用nvvp
1 | nvvp |
出现Visual Profiler图形化界面
nvprof命令使用
常用度量标准
1 | nvprof --query-metrics # 查看所有能用的参数命令 |
bug
nvprof –metrics gld_throughput ./multiply ./test/a_15360_15360.mtx ./test/b_15360_2.mtx ./outnvprof
nvprof –metrics achieved_occupancy ./multiply ./test/a_15360_15360.mtx ./test/b_15360_2.mtx ./out
Make sure cudaProfilerStop() or cuProfilerStop() is called before application exit to flush profile data.
解决方法在程序末尾加cudaDeviceReset()或者cudaProfilerStop()
在runtime API下,添加
1 |
|
在dariver API下则为,添加
1 |
|
这个方法是visual profiler适用的,nsight的profiler功能可能不适用。
在你的程序结束前, 请至少调用如下两种之一, 再退出.
(1)
cudaDeviceSynchronize();
cudaDeviceReset();
或者
(2)
cudaDeviceSynchronize();
cudaProfilerStop();
注意别漏了cudaDeviceSynchronize();
不加上面任意一种而直接退出将导致各种奇葩问题, 例如看不到部分数据, 看不到时间线之类的.
cudaDeviceReset重置当前线程所关联过的当前设备的所有资源.如在调用cuda的过程中出现中途错误,需要提前退出程序,可以调用这个cudaDeviceReset来清空之前所关联过得所有资源。
猜想:
可能也能清空当前线程和device的映射关系
ERR_NVGPUCTRPERM - The user does not have permission to profile on the target device.
1 | 既然是没有权限,则采用sudo来解决 |