无心人
发表于 2008-5-20 21:37:38
GMP 4.0就支持大部分64位CPU啊
yysnet
发表于 2010-5-28 04:07:24
Phenom X4 955 8M, AMD 785G, 4G DDR3 800Mhz
*** 被乘数与乘数长度之比为:1 ***
现在计算长度(bits): 256
GMP 包计算时间(us):0.123
HugeCalc包计算时间(us):0.288
现在计算长度(bits): 512
GMP 包计算时间(us):0.480
HugeCalc包计算时间(us):0.788
现在计算长度(bits): 1024
GMP 包计算时间(us):1.610
HugeCalc包计算时间(us):2.344
现在计算长度(bits): 1536
GMP 包计算时间(us):2.690
HugeCalc包计算时间(us):4.699
现在计算长度(bits): 2048
GMP 包计算时间(us):5.188
HugeCalc包计算时间(us):8.058
现在计算长度(bits): 3072
GMP 包计算时间(us):8.562
HugeCalc包计算时间(us):18.356
现在计算长度(bits): 4096
GMP 包计算时间(us):16.302
HugeCalc包计算时间(us):28.949
现在计算长度(bits): 8192
GMP 包计算时间(us):47.092
HugeCalc包计算时间(us):107.451
现在计算长度(bits): 10240
GMP 包计算时间(us):71.683
HugeCalc包计算时间(us):150.374
现在计算长度(bits): 16384
GMP 包计算时间(us):140.498
HugeCalc包计算时间(us):375.935
现在计算长度(bits): 64000
GMP 包计算时间(us):1050.708
HugeCalc包计算时间(us):1372.801
现在计算长度(bits): 65536
GMP 包计算时间(us):1079.381
HugeCalc包计算时间(us):1170.816
现在计算长度(bits): 256000
GMP 包计算时间(us):6022.613
HugeCalc包计算时间(us):4125.732
现在计算长度(bits): 512000
GMP 包计算时间(us):13034.764
HugeCalc包计算时间(us):8355.961
现在计算长度(bits): 1048576
GMP 包计算时间(us):29845.131
HugeCalc包计算时间(us):15844.085
现在计算长度(bits): 33554432
GMP 包计算时间(us):1681408.751
HugeCalc包计算时间(us):661418.545
现在计算长度(bits): 67108864
GMP 包计算时间(us):3775502.519
HugeCalc包计算时间(us):1247997.905
现在计算长度(bits): 100663296
GMP 包计算时间(us):5431298.917
HugeCalc包计算时间(us):1897381.737
*** 被乘数与乘数长度之比为:10 ***
现在计算长度(bits): 256
GMP 包计算时间(us):0.026
HugeCalc包计算时间(us):0.197
现在计算长度(bits): 512
GMP 包计算时间(us):0.086
HugeCalc包计算时间(us):0.219
现在计算长度(bits): 1024
GMP 包计算时间(us):0.265
HugeCalc包计算时间(us):0.402
现在计算长度(bits): 1536
GMP 包计算时间(us):0.428
HugeCalc包计算时间(us):0.683
现在计算长度(bits): 2048
GMP 包计算时间(us):0.781
HugeCalc包计算时间(us):1.089
现在计算长度(bits): 3072
GMP 包计算时间(us):1.443
HugeCalc包计算时间(us):2.071
现在计算长度(bits): 4096
GMP 包计算时间(us):2.426
HugeCalc包计算时间(us):4.051
现在计算长度(bits): 8192
GMP 包计算时间(us):11.819
HugeCalc包计算时间(us):13.946
现在计算长度(bits): 10240
GMP 包计算时间(us):18.160
HugeCalc包计算时间(us):31.859
现在计算长度(bits): 16384
GMP 包计算时间(us):38.868
HugeCalc包计算时间(us):49.381
现在计算长度(bits): 64000
GMP 包计算时间(us):334.200
HugeCalc包计算时间(us):813.677
现在计算长度(bits): 65536
GMP 包计算时间(us):351.404
HugeCalc包计算时间(us):735.623
现在计算长度(bits): 256000
GMP 包计算时间(us):2542.980
HugeCalc包计算时间(us):1461.051
现在计算长度(bits): 512000
GMP 包计算时间(us):7596.763
HugeCalc包计算时间(us):2801.356
现在计算长度(bits): 1048576
GMP 包计算时间(us):22628.445
HugeCalc包计算时间(us):5318.212
现在计算长度(bits): 33554432
GMP 包计算时间(us):818914.139
HugeCalc包计算时间(us):190517.698
现在计算长度(bits): 67108864
GMP 包计算时间(us):1862619.81
HugeCalc包计算时间(us):409794.137
现在计算长度(bits): 100663296
GMP 包计算时间(us):2682022.99
HugeCalc包计算时间(us):740040.658
gxqcn
发表于 2010-5-28 07:34:42
谢谢楼上的测试报告,请问你的CPU是几核的?
测试数据基本符合大家先前总结的规律。
qianyb
发表于 2010-5-28 07:39:19
10万以上HugeCalc比GMP快,10万以下的GMP快
gxqcn
发表于 2010-5-28 07:43:35
刚刚看到楼主32#的yysnet发给我的短信,
他的机器配置是:AMD phenom X4 955, 4核,主频3.2G。系统win7 X64
以后若开发了新版软件,在正式发布前一定会邀请大家先测试体验一下。
liangbch
发表于 2010-5-28 13:30:39
我们大家都知道,当数的规模很大时,最有效的大数乘法算法是FFT或者FFT的变种。 著名的圆周率计算程序super-pi,用的就是纯粹的浮点FFT. 另外,一个ooura FFT例子程序也给出了用FFT计算圆周率的代码,由于该FFT的效率很高,用它的这个程序计算圆周率比super-pi更快。可从7种FFT代码和测试程序(http://download.chinaprj.cn/detail/iDiTbqBB) 下载到ooura的的源码和计算圆周率的程序。
当前,显示卡的 GPU 浮点运算单元有越来越多的趋势,其频率也越来高。用GPGPU是做大规模科学计算不但成为可能,而且速度比传统的CPU快得多。大概在2008年,nvidia 推出一个开发工具包cuda,利用这个开发工具包,工程师能够利用Nvidia的显示卡做科学计算,该开发包提供了预编译的FFT和BLAS库。我想,利用它的cuda FFT,来做大数乘法,速度应该比使用CPU快上很多。 我想,我们可以尝试使用CUDA来做大数计算。
关于cuda的减少,请参阅:http://en.wikipedia.org/wiki/CUDA,可从http://www.nvidia.cn/object/cuda_get_cn.html下载开发工具包
支持cuda的显卡应该是从GeForce 8 系列开始,我查了一下,GeForce 8 Series 发布于2007 年夏天。
值得注意的是,早期的Geforece 显示卡和个别GeForce_200_Series 不支持双精度浮点计算,关于Geforce显卡的技术指标,可在wiki上查找,例如 Geforce 2系列的资料可从http://en.wikipedia.org/wiki/GeForce_200_Series.
CUDA 开发包包含以下组件
C/C++ compiler
CUDA Visual Profiler
OpenCL Visual Profiler
GPU-accelerated BLAS library
GPU-accelerated FFT library
Additional tools and documentation
gxqcn
发表于 2010-5-28 14:55:39
确实,一个算法库的整体效率主要取决于最高级别的核心算法(比如楼上说的FFT),这就是所谓的80/20原则。
对于CUDA描绘的前景确实很期待,但不知其现在支持的整数最大位长达到了多少?
liangbch
发表于 2010-5-28 18:03:31
37# gxqcn
因为GPU主要使用浮点数处理图形。所以我认为CUDA主要应用于浮点运算。
wayne
发表于 2010-5-28 19:09:41
CPU是通用处理器,GPU是专用处理器,专用于图形图像处理,特点是并行度非常的高,
CPU搞并行计算充其量也就是4个,8个核而已,跟GPU相比,远远不是一个数量级的。。。
gxqcn
发表于 2010-5-28 19:35:05
大数运算想高度并行并不容易,所以比较难发挥GPU的优势。