我正在尝试调试可正常工作的源代码,并且在编译时不会给出错误或警告。问题是,当我一步一步地用cuda-gdb运行它时,根本没有启动CUDA内核(我从调试器获得的输出与Nvidia cuda-gdb指南中显示的完全不同),但程序仍然工作没有任何错误。在任何时候,我都会得到没有CUDA内核,设备或线程。显然焦点也没有设置任何东西。我正在使用CUDA-GDB的4.2版本。CUDA-GDB:没有CUDA设备
这是我从调试程序时得到它应该进入内核:
Breakpoint 1, matrixMulGPU (M=0x609160, N=0x609270, P=0x609490, Width=8)
at matrixMul1.cu:141
141 MatrixMulKernel<<<dimGrid, dimBlock>>>(Md, Nd, Pd, Width);
(cuda-gdb) step
MatrixMulKernel (__cuda_0=0x210000, __cuda_1=0x210100, __cuda_2=0x210200,
__cuda_3=8) at matrixMul1.cu:103
103 __global__ void MatrixMulKernel(float *Md, float *Nd, float *Pd, int Width){
(cuda-gdb) step
__device_stub__Z15MatrixMulKernelPfS_S_i (__par0=0x210000, __par1=0x210100,
__par2=0x210200, __par3=8)
at tmpxft_000016d4_00000000-1_matrixMul1.cudafe1.stub.c:5
5 tmpxft_000016d4_00000000-1_matrixMul1.cudafe1.stub.c: Arquivo ou diretório não encontrado.
in tmpxft_000016d4_00000000-1_matrixMul1.cudafe1.stub.c
(cuda-gdb) step
cudaLaunch<char> (
entry=0x4011ea "UH\211\345SH\203\354(H\211}\350H\211u\340H\211U؉MԋM\324H\213U\330H\213]\340H\213E\350H\211\336H\211\307\350\024\377\377\377H\203\304([\311\303UH\211\345SH\203\354(\[email protected]") at cuda_runtime.h:958
958 return cudaLaunch((const char*)entry);
(cuda-gdb) step
959 }
(cuda-gdb) step
MatrixMulKernel (__cuda_0=0x210000, __cuda_1=0x210100, __cuda_2=0x210200,
__cuda_3=8) at matrixMul1.cu:121
121 }
我的CUDA设备是一块GeForce 8400M GS,我曾与DEVICEQUERY检查没有问题。 我不知道如何解决这个问题,因为Nvidia论坛目前处于脱机状态!
非常感谢。
您可以在显示设备上调试使用cuda-gdb需要一个专用设备 – talonmies 2012-07-23 20:19:02
talonmies,你是什么意思显示设备?虽然我的设备可以使用RAM内存,不是专用的吗? – felippeduran 2012-07-25 02:32:59
我的意思是GPU你不能调试运行你的显示器,所以除非你至少有两个GPU,或者你没有运行X窗口,否则你不能使用cuda-gdb。 – talonmies 2012-07-25 06:13:31