找回密码
 欢迎注册
楼主: gxqcn

[测试] HugeCalc vs. GMP

[复制链接]
发表于 2008-5-20 21:37:38 | 显示全部楼层
GMP 4.0就支持大部分64位CPU啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 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
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-28 07:34:42 | 显示全部楼层
谢谢楼上的测试报告,请问你的CPU是几核的?
测试数据基本符合大家先前总结的规律。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-28 07:39:19 | 显示全部楼层
10万以上HugeCalc比GMP快,10万以下的GMP快
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-28 07:43:35 | 显示全部楼层
刚刚看到楼主32#的yysnet发给我的短信,
他的机器配置是:AMD phenom X4 955, 4核,主频3.2G。系统win7 X64
以后若开发了新版软件,在正式发布前一定会邀请大家先测试体验一下。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 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
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-28 14:55:39 | 显示全部楼层
确实,一个算法库的整体效率主要取决于最高级别的核心算法(比如楼上说的FFT),这就是所谓的80/20原则。

对于CUDA描绘的前景确实很期待,但不知其现在支持的整数最大位长达到了多少?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-28 18:03:31 | 显示全部楼层
37# gxqcn

因为GPU主要使用浮点数处理图形。所以我认为CUDA主要应用于浮点运算。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-28 19:09:41 | 显示全部楼层
CPU是通用处理器,GPU是专用处理器,专用于图形图像处理,特点是并行度非常的高,
CPU搞并行计算充其量也就是4个,8个核而已,跟GPU相比,远远不是一个数量级的。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-28 19:35:05 | 显示全部楼层
大数运算想高度并行并不容易,所以比较难发挥GPU的优势。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-21 21:02 , Processed in 0.028018 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表