CUDA果然好厉害!8过也各种无法理解ww

也许有人还记得咱曾经做过Mente Carlo法球圆周率的程序,当时那个是用的C++写的;现在为了练习CUDA,咱也用CUDA写了一个——8过现在这个程序运行倒是运行了,但是有一个奇怪的问题是:完全一模一样的程序,直接在Terminal里面用./打开得到的误差远高于直接双击图标打开运行得到的误差orz原因不明

如上图所示,同样是512×106个随机点,左边是直接在Terminal里面用./打开得到的结果,得到的圆周率对比实际的圆周率的误差高达7825×10-6,而右边是直接双击打开得到的结果,误差只有24×10-6,而且这不是偶然,无论测试多少次./得到的结果都是高达4位数,而直接打开则一般都是两位数,或者运气好的时候也有一位数的时候orz可以肯定./打开的时候绝对有什么奇怪的效果,但是目前为止查了各种资料未果orz虽然大致可以推测应该是CUDA的随机数函数curand的问题ww CUDA到底是怎么回事www

啊当然,对于Monte Carlo法来说,GPU的运算要远快于CPU,同样是512×106个随机点,咱女仆本上的9400m只要不到两秒钟,而Core 2 Duo(2.26GHz)则要将近一分钟www

嘛,这里把CUDA的代码贴上来,欢迎有兴趣的童鞋研究www
Continue reading “CUDA果然好厉害!8过也各种无法理解ww”