用户
 找回密码
 立即注册
发表于 2013-6-6 20:46:05
46102
本人用CUDA写了一个科学计算程序,运行结果本来很好,某天在添加了一个功能之后计算结果突然出错了。我把版本会退到之前,结果一样还是错的,最后稀里糊涂的又好了。后来这一个月运行结果很正常,结果今天又出现了一样的错误,然后我把现在的程序作了个备份,将很早之前的老版本代码copy进去,发现结果正常。然后奇怪的是,这时候我的原始程序也运行正常了,代码一行没改,甚至都没有重新编译。真是见鬼了。
使用道具 举报 回复
发表于 2013-6-6 21:50:22
楼主确定不是来开玩笑的?

您说您都“没有重新编译”突然您的程序就好了。那显然证明只是代码外的其他因素,例如:
(1)您试图中途使用A卡运行程序。
(2)您的数据集有过改变等等。

既然您现在都不用改一行代码,甚至不用重新编译就能可以了。我觉得您最好看看您的环境是否发生变化?

再举个例子说:
(3)Adobe Reader很容易占据上百MB的显存的,您如果一共有1GB显存,以前分配800-900MB, 现在运行先开启的Adobe Reader, 然后再运行程序,显然就容易无法分配到了。您觉得呢?

我同意您的观点:“真是见鬼了”。
使用道具 举报 回复 支持 反对
发表于 2013-6-6 23:43:51
横扫千军 发表于 2013-6-6 21:50
楼主确定不是来开玩笑的?

您说您都“没有重新编译”突然您的程序就好了。那显然证明只是代码外的其他因素 ...

绝对不是开玩笑的,我的程序是在一个我刚买的曙光GPU运算服务器上运行的,显存只用了不到10%,当时的情景,我这么描述一下吧,我的程序放在文件夹A里,出错后,我把程序拷贝了一份到文件夹B,在这个文件夹里,我把程序的代码做了一些调整,调整过程中就发现了一些奇怪的事情,比如到了某一步的时候,如果我注释掉一个完全没有调用的,以前用来测试的小kernel,则程序结果会正常,加上就不正常。最后文件夹B里的程序终于运行正常了(其实我也不知道自己干了什么)。然后试了下A里的程序,发现也正常了。我是真想不通啊。
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册