我现在有个40W长度的数组d_y在显存中,我先计算d_y前20w数据进行kernel操作,完后了之后然后对d_y后20w行数据kernel进行操作。但是有个问题就是为什么我对d_y前20w个数据操作的时候,我调试程序的时候,在显存中d_y的后20w个数据的值全是0 呢?
可能的情况:
1.内核里面操作前20W的时候,忘了加if(tid<200000),导致后面的数据被修改
2.后面20W的数据没有正确传入显存
我有个400w的矩阵数据,需要进行列操作,结果会加到到400w长度的显存d_y中.。d_y在之前操作中已经有了值。我对矩阵进行了分块。先矩阵前200w个值,把结果加入到d_y中。然后把后200w的值操作之后。由于列操作的时候加入到到d_y中,会加入到到0到400w之间任何的一个值,所以我要确保d_y的值是正常的。。现在的问题是我对前200w操作的时候,为什么d_y的后200w的值是空值。对后200w操作的时候,前200w的值为0。这个是清楚一点的描述
然后你说的第一点,应该不是的。就是我刚进入kernel函数,设置断点,d_y的值就不对了。
找到问题的原因了。还是数据操作的原因的。