曾几何时,2010年底,一个程序,电脑A可以运行,运行无错。
曾几何时,2012年年前,同样程序,电脑B重新配置环境后可以运行,隔了几天,仍然没错。
曾几何时,2012年年后,同样程序,电脑B, 有时候打开可以运行结果是对的,有时候打开运行结果不对!!!
程序结构是 .cu文件调用了一个内核.cu文件。 没有什么特殊, 可以保证拷贝过程无错误,因为我会邮箱记录每天的版本。准确版本都备份的。
求稳 千军 ice 及 其他各路大神!
曾几何时,2010年底,一个程序,电脑A可以运行,运行无错。
曾几何时,2012年年前,同样程序,电脑B重新配置环境后可以运行,隔了几天,仍然没错。
曾几何时,2012年年后,同样程序,电脑B, 有时候打开可以运行结果是对的,有时候打开运行结果不对!!!
程序结构是 .cu文件调用了一个内核.cu文件。 没有什么特殊, 可以保证拷贝过程无错误,因为我会邮箱记录每天的版本。准确版本都备份的。
求稳 千军 ice 及 其他各路大神!
这个,百思不得其解。根据您的后2行,同样一台电脑,年前可以用,年后就结果不对了。。。
那么我猜测2点:
(1)过年后,机器不稳定了(例如过年放鞭炮导致机器振动?显存接触不良?)
(2)机器无问题,而是你的程序本身的问题。
详细说一下(2):
(2-a)该问题和时间有关,即时间作为运算的一个输入。或者运算过程依赖于时间。
(2-b)之前的测试未能100%覆盖所有代码。导致你看不到问题。
总之真诡异啊。。
我建议:
(1)换朋友电脑,看看是否是机器硬件问题。
(2)换电脑依然有问题。那么问题出现在代码。 你可以将时间改为不出问题的时刻。然后重新运行,看看是否消失。
建议先如上尝试,我觉得有点诡异。。。
欢迎其他分析。
补充一下:
(1)为了避免每天修改程序导致程序位置不一样,每一次修改小弟都有个记录的本子记录修改位置以及修改版本号。所以可以保证年前年后运行是同一个版本!
(2)为了防止自己的疏忽导致版本不一致,本人会在自己邮箱备份一个 “某年某月某日完全正确版本”。 因此,我下载了邮箱版本进行测试以保证正确性。
(3)在邮箱版本的文件里面有年前运行的2个算例输出的结果,可以保证一定可以算出来,而且算是对的。
(4)为了避免是配置问题,小弟还专门在template版本上修改了一版,仍然是有时运行对有时候运行不对!(90%运行不对,偶尔才对)
有诗悬赏大神可以出错的原因?
有诗竞猜下这可能的问题是哪里??
从你的描述看,无法猜出(这是一个猜谜游戏吗?)
建议其他人分析下。。
此外,我建议你使用svn。比用笔记录版本号和修改处要好。
谢谢 !今晚就换个电脑测试!
过年的确 更新了电脑的软件,也让电脑软件过个新年!
谢谢 我明天就学习用SVN
我先按照您说的试一试 然后回来版上汇报!:lol
此外,如果你用了SVN后,分别提交年前的正确版本和年后的90%不出错的版本,
然后用tortoisesvn自带的diff功能,看看哪里修改了。着重看这里。
一段代码的自白:
曾几何时,2010年底,主人把我塞在了电脑A里面,我勉励地运行着,没有报错。
曾几何时,2012年年前,又被主人揪出来,塞到电脑B里面,我水土不服,主人瞎折腾了几天,勉强跑过去了。
曾几何时,2012年年后,主人又要把我塞到那个2B电脑里面,不带这么折磨程序的,老子不干了,爱跑不跑,啥时候老子心情好了再给你正确结果。
话说平时没事一句话都不说,关键时刻就指着我,哪那么多好事。
好了,作同样风格诗歌一首,聊表猜测,以飨读者,兼做娱乐之用,祝LZ早日解决问题~
千军版大
我换了个电脑C测试,程序完全没有问题。
我又把程序换回到B电脑,B电脑还是不对。
CUDA及 SDK 因为 其他软件升级导致安装程序破坏吗?
现在需要全部重装 全部卸载吗?
恭喜楼主,那这样应该是程序无问题。
问题在机器上。
而机器的软件硬件环境都会影响。
软件上说:显卡驱动。(因为cudart*.dll伴随你的exe, 所以只需要考虑显卡驱动)。
硬件上说:内存是否有问题,显卡是否有问题。都是需要考虑的。
你可以如下三步:
(1)重装驱动。(无需toolkit)
(2)检查内存(可以用替换法)
(3)检查显卡(依然可以替换)。
祝你找到终极原因。
谢谢版大!
(1)是否需要重新装SDK??? 还是仅仅驱动?
(2)何为替换?请明示
3ks~~
(1) SDK不需要。直接安装最新驱动,然后双击你的exe即可。你的exe自带runtime的cudart的dll的。
(2)将C机器的卡换到B机器,以及内存也这么处理。
恩恩!
可惜的 我的B 是 笔记本~~~~~~
一般都在笔记本开发。
AC都是台式机。
如何是好 无法入眠啊!
刚刚重装了 安装cuda是好对应的显卡驱动,还是不行。 是否可以装2013最新版本的显卡驱动,tookit版本还是4.0?
LZ请淡定,身体是革命的本钱,请先休息,来日方长。
对了,新版的驱动,老版的toolkit是可以的。(也就是说,你安装了toolkit之后,是可以随意升级驱动的)
不过尝试一下新版的CUDA 5也是不错的。
祝您成功驱逐BUG~
谢谢 ice神!
已一天保证8小时,刚刚起来!
谢谢深夜回复于激励!
版大~
想死的心都有了。
上午重转了最新版本显卡后,在笔记本上计算正确了。
下午现在有是不能算了。 真是出鬼了!!!!!
在计算输出文件赫然显示上午一个计算结果文件和下午一个计算结果文件,就是不一样!
您看 我彻底把显卡驱动 、 tookit、 cuda sdk全部重装一遍 ,有用吗?
[
您好,请淡定。
您能详细说一下运行的问题么?
有无报错?结果明显偏离还是有一定波动?
有木有可能是线程同步的问题?或许结果正确的时候,刚好线程按正确的序列执行了(这样的话让人觉得程序是没有问题的),而结果有问题的时候,线程执行顺序是乱序的!以前在写程序的时候碰见过,刚写完算的时候没有任何问题,感觉还不错,但是改变线程数量再算的时候就发现出问题了,后来检查了半天才发现是线程同步的问题!
我也遇到到过同样的问题,年前我们写了个程序,在最后合并时75%的测试会崩溃,然后放假了,没理他,回家过了个年后,回来调试,怎么测试都不崩了,当时我们都崩溃了。。
佛曰:一碗水中有三万六千条虫,一段代码中有65536个BUGs。
既然LZ的情况这么诡异,不妨也考虑下程序结构上是不是有什么纰漏,造成结果如此的随机。
祝LZ早日解决此问题。