在仿真环境下的一个小例子:目的是将矩阵第一列(除第一行)消为0
第一段代码
global void Gauss(int Ad)
{int j;
int ay = threadIdx.y;
shared int ms[4];
ms[1]=1;ms[2]=1;ms[3]=1;
for(j=1;j<4;j++)
Ad[jN+ay]^=ms[j]&Ad[ay];}
1 0 1 1 0 | 1 0 1 1 0
1 1 1 0 1 | 0 1 0 1 1
1 0 0 0 1 | 0 0 1 1 1
1 1 0 0 1 |这是原矩阵 0 1 1 1 1 这是这段代码的结果
将红色代码改为如下时:for(j=1;j<4;j++)ms[j]=Ad[j*N];
结果如下:
1 0 1 1 0
0 1 1 0 1
0 0 0 0 1
0 1 0 0 1
想要第一种结果,但代码要写成第二种,我觉的问题是在共享变量的使用,可是不明白为什么,求教
[ 本帖最后由 wwwwcccc123 于 2010-3-20 11:21 编辑 ]