我想得到一个数组不同部分的总和。我运行我的代码。并从打印的内容中找出两个问题。
亲1:
这里详细介绍。已经解决了。也许这不是一个真正的问题。
亲2:
在我的代码中,我给 sbuf[0,2], sbuf[1,2], sbuf[2,2] 和 sbuf[0,3], sbuf[1,3], sbuf[2,3] 赋予了不同的值.
但是发现cuda.syncthreads()
sbuf[0,2] 和 sbuf[0,3]、sbuf[1,2] 和 sbuf[1,3]、sbuf[2,2] 和 sbuf[2,3] 之后的值相同]。
直接导致Xi_s、Xi1_s、Yi_s的取值错误。
这些是我根据内核中打印的内容的猜测。
@talonmies 说像这样依赖内核中的打印语句是危险的。
所以我想知道它是否有一种有用的方法来调试我的代码,而不是在内核中打印语句。
...
@cuda.jit
def calcu_T(D, T):
...
if bx==1 and tx==1:
print('5,c_x,c_y,L,c_index,bx,tx,ty,sbuf[0,ty],sbuf[1,ty],sbuf[2,ty],',c_x,',',c_y,',',L,',',c_index,',',bx,',',tx,',',ty,',',sbuf[0,ty],',',sbuf[1,ty],',',sbuf[2,ty])
cuda.syncthreads()
if bx==1 and tx==1:
print('1,c_x,c_y,L,c_index,bx,tx,ty,sbuf[0,ty],sbuf[1,ty],sbuf[2,ty],',c_x,',',c_y,',',L,',',c_index,',',bx,',',tx,',',ty,',',sbuf[0,ty],',',sbuf[1,ty],',',sbuf[2,ty])
...