关于共享内存使用的一个问题,求教

在仿真环境下的一个小例子:目的是将矩阵第一列(除第一行)消为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[j
N+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 编辑 ]

自己顶一下,继续求教

代码好像少了点什么,用插入代码看看

版主能不能说详细一点;),什么是插入代码

[ 本帖最后由 wwwwcccc123 于 2010-3-20 10:43 编辑 ]

就是在写帖子的时候,有个“插入代码”选项,这样代码就不会出问题了,呵呵