__device__ 函数 release下正常编译通过但不工作

新手请教两个问题:
1、我的程序A,运行中需要调用一些 【 device 函数 】,用win32和x64的debug和release编译都能通过,单只有win32和x64的debug的计算结果是对的,release下的结果是错的,原因初步估计是 【 device 函数 】在release下不运行;
2、我的程序B,在win32 debug,win32 release, X64 debug下都能正确编译和正确计算,但是在 X64 release下只能编译通过,但是不能正确计算,补充一点,这里没有【 device 函数 】。

运行平台: win7 64位 + vs2010(没装Nsight)+ 1个Tesla C2050(本机器只有这一块显卡)+ CUDA 5.0

求各位同行给小弟一点建议,先谢过了。

楼主您好:

(1)您的结果不同,不代表您说的__device__工作不正常的,也有可能是release的结果更为精确。产生了和不精确的CPU以及GPU debug下的结果的差异。
(因为release下可以综合出很多的融合乘加指令的,往往能提高精度。)

建议您使用已知的精确数据测试,看看是否是此原因。

(2)第二个问题您说的过于笼统了,请问您的不能正常计算指的是什么?如果是指的出错的话,建议您发下错误代码,(光说不能正常计算,论坛无法自动为您脑补出全部问题的):

请您通过这样:cudaError_t code = cudaDeviceSynchronize(); 来检测出错代码,
这行放置在您的kernel启动的后面。

感谢来访,请尝试此两个建议。

谢谢版主。

我接下来将按照您的建议进行测试,有后续问题的话,再详细请教。