- 注册时间
- 2015-10-9
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 1218
- 在线时间
- 小时
|
发表于 2018-3-2 00:27:20
|
显示全部楼层
(我本来想冲击计算圆周率的世界纪录,但看了看现在的记录,我感觉我没那么多钱买硬盘)
我的大数库(ilmp)拥有的函数类型已经足够我计算pi了。但这个库适用的位数还太低(受限于可以申请的连续内存)。
目前我库是单线程的,纯内存的,纯整数的,无错误校验的。使用的算法是 basecase,karatsuba,toomcook33,SSA。
可能的思考方向:
根据一些资料,使用汇编级向量化的复浮点FFT在较短长度(不超过内存或者cpu cache的级别)要更快,但可能出现浮点舍入误差,需要一个简单的checksum。
所以是否应该写点向量化浮点汇编?
http://www.numberworld.org/y-cru ... multiplication.html
“In the past, y-cruncher also had an implementation of 3-way Toom-Cook. But it was never optimal to use on any processor and was removed after v0.5.5. Likewise, no attempt was ever made to implement higher or unbalanced Toom-Cook algorithms. Floating-Point FFT is so fast that it renders all of these more complicated methods completely obsolete. If current hardware trends continue, even Karatsuba multiplication will eventually disappear from future processors.”
根据一些资料,目前世界纪录使用的软件在计算超长乘法时用的是模小质数的NTT,最后用中国剩余定理重组。它用了一些64bit的质数。
所以是否应该尝试一下NTT?
大数库应该有纠错能力,至少对乘法运算,可以检查出到底乘对了没有。
大数库应该有以磁盘为存储介质的超大数(T以上量级)计算能力。
|
|