我有一个相当大而复杂的CUDA代码,可以很好地挂起大量的块/线程.我试图找出代码挂起的确切位置.
当我运行代码时cuda-gdb,我可以看到哪些线程/块挂起,但我无法看到"虚拟PC"之外的位置.
如果我使用"-G"编译代码来获取调试信息,那么无论我运行多长时间,它都会运行得慢很多并且拒绝挂起.
有没有办法将"虚拟PC"映射到源代码中的一行代码,甚至大约?或者有没有办法在不关闭所有优化的情况下获取调试信息?
我尝试过使用"-G3",但无济于事.这只是给了我"#nvcc warning : Setting optimization level to 0 as optimized debugging is not supported" 类型的警告.我正在使用CUDA编译工具4.1版.
一个简单的问题,确实:我有一个内核,它可以运行每个Streaming Multiprocessor(SM)的最大块数,并且想知道我理论上可以从中提取多少性能.理想情况下,我想知道空闲的SM周期的百分比,即所有warp在内存访问时被阻止.
我真的只是想找到这个号码.我不想要的是