有没有人遇到这样的问题:0: copyin MemcpyAsync (dev=0x704b27e00, host=0x203707e00, size=32000
如题,该错误调试发现,程序终止于语句:ERR = cudaMemcpyAsync(DEN,m_DEN,dm_NPRT)
DEN, m_DEN,都有声明和定义内存,分别是devic和host内存。cudaMemcpyAsync这个语句在该行之前也出现过,前面的也通过的,不知为什么。
另外这个程序可以在我原来的机器(Cuda5.5/K20)上运行,最近换了个地方干活,换了台机器(CUDA7.5/GK110B),就出现这个问题了。
---------------------------------------------------------------------------------------------------------------------------------
然后我就利用cuda-memcheck 发现了以下错误提示:
-------
========= Invalid __shared__ write of size 16
========= at 0x00000388 in nbl_cal_neighborelist_devkernel2c_
========= by thread (0,0,0) in block (14,0,0)
========= Address 0x00000074 is misaligned
========= Saved host backtrace up to driver entry point at kernel launch time
========= Host Frame:/usrb64/nvidiabcuda.so.1 (cuLaunchKernel + 0x2cd) [0x15865d]
========= Host Frame:/opt/pginux86-64/2015/cuda/7.5b64bcudart.so.7.5 [0x146ad]
========= Host Frame:/opt/pginux86-64/2015/cuda/7.5b64bcudart.so.7.5 (cudaLaunch + 0x143) [0x2ece3]
========= Host Frame:./fasMD.exe [0xe8200]
========= Host Frame:./fasMD.exe [0xe78e0]
========= Host Frame:./fasMD.exe [0xe3315]
========= Host Frame:./fasMD.exe [0x5002]
========= Host Frame:./fasMD.exe [0x77fe]
========= Host Frame:./fasMD.exe [0x3b34]
========= Host Frame:b64bc.so.6 (__libc_start_main + 0xfd) [0x1ed5d]
========= Host Frame:./fasMD.exe [0x3a29]
-------
查到这的时候,有个朋友说可能不是cudaMemcpyAsync的问题,好像有道理,我去查了一下cal_neighborelist_devkernel2c这个kernel子程序。注释掉,程序可以运行。
但是我仔细检查了这个kernel,也不能找出问题的所在。
我通过屏蔽些地方,或者添加些demo语句。发现可能是里面的shared变量有问题。但是我还是找不到问题的所在。
下面我贴出这个kernel,希望高手作答,谢谢。