使用共享区做矩阵运算是不同编译模式得出的结果怎么不一样?
我用的是VS2005,用的开勇大哥做的那个CUDA VS WIZARD,里面有四种模式,EmuDebug、EmuRelease、Debug和Release
我在用EmuDebug、EmuRelease,下面的代码可以正常运行,如果换成其它2种都得出来很不对的数,我想做的效果就是,将两个大小相同8*8的矩阵一一对应的相减,取相减后数的绝对值,然后在把这些值相加起来。返回!原来在做别的CUDA程序时,在debug,和release模式下编译过,也可以正常得出结果。请高手指点。本人初学者
比如说同样是下面这个内核代码,我用EmuDebug、EmuRelease返回正常,可是用其它那两种模式编译出来的效果肯定有问题。
还有一个问题是我在申请共享区时,在呼叫调用内核函数时
global static void _FunctionFour(int *cmOne,int *cmTwo,int *cmThree)
{
shared int data[65];
const int tid = threadIdx.x;
if(tid == 0)
data[0] = 0;
int temp = cmOne[tid] - cmTwo[tid];
data[tid+1] = temp > 0 ? temp : -temp;
data[0] += data[tid+1];
__syncthreads();
if(tid == 0)
*cmThree = data[0];
}