问题一:
Warning: The user does not have permission to profile on the target device. See the following link for instructions to enable permissions and get more information: https://developer.nvidia.com/NVSOLN1000
原因:
出现这个问题的原因是nvidia的nvpp和nvprof不再支持non-root用户进行性能分析,如下图:
详细内容点击链接:https://developer.nvidia.com/nvidia-development-tools-solutions-err-nvgpuctrperm-nvprof
解决:
用户权限改为root权限
问题二:
Some profiling data are not recorded. Make sure cudaProfilerStop() or cuProfilerStop() is called before application exit to flush profile data.
解决:
方法一:
在程序结束前, 请至少调用如下两种之一, 再退出.
(1).
cudaDeviceSynchronize();
cudaDeviceReset();
(2).
cudaDeviceSynchronize();
cudaProfilerStop();
注意添加头文件:
#include <cuda_profiler_api.h>
方法二:
执行命令时,添加新的选项:
--unified-memory-profiling off
例如:
nvprof --unified-memory-profiling off ./cuda_test
问题三:
自己在实验时,发现上面的解决方式都不能解决我的问题,在经过排查后,发现是自己的执行命令中有些命令写错了
原本的执行命令:
nvcc -arch=sm_70 gpu -o CUDA_test
其中自己GPU的计算能力为6.0,这里写作了7.0
解决:
修改执行命令中的计算能力参数
nvcc -arch=sm_60 gpu -o CUDA_test
这里不写-arch=sm_60这个命令也可以
nvcc gpu -o CUDA_test