用户
 找回密码
 立即注册
hit_fsi 该用户已被删除
发表于 2013-12-2 10:32:36
62562
本帖最后由 hit_fsi 于 2013-12-2 10:34 编辑

新手请教两个问题:
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


求各位同行给小弟一点建议,先谢过了。
使用道具 举报 回复
发表于 2013-12-2 11:13:30
楼主您好:

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

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

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

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

感谢来访,请尝试此两个建议。
使用道具 举报 回复 支持 反对
发表于 2013-12-2 11:25:38
横扫千军 发表于 2013-12-2 11:13
楼主您好:

(1)您的结果不同,不代表您说的__device__工作不正常的,也有可能是release的结果更为精确。 ...

谢谢版主。

我接下来将按照您的建议进行测试,有后续问题的话,再详细请教。
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册