gxqcn
发表于 2008-7-28 16:36:13
可惜当时我运行的还不是最终的优化版,
否则速度会快1倍(参见 122#),将可得到更多的数据。
不过,我没有那好的条件,可以数天不关机运行程序。
无心人
发表于 2008-7-28 16:44:44
呵呵
你能连续38小时不关,我已经很佩服你了啊
呵呵
我服务器没VC2008
因为最近三个月重新装过一次
另外看icc编译的asm文件
发现他没对关键语句用SSE2
呵呵
以前没注意
看他优化了,结果优化的是初始化部分,呵呵
现在想来,那个sum + delta加
完全可以用一个128位的8字组合的加代替
应该能节约点时间
但后面的规整似乎还是无法加速
你的代码是80个时钟多点进行一次循环的
我想能压缩到40个时钟内
就是很大的胜利
(按你优化代码算的)
无心人
发表于 2008-7-28 17:00:25
出现问题了
把代码搞丢了
icc -fast -msse2 square.c -o square.c
给覆盖了
:*-^
测试修改后C代码结果暂时作废
===================
另外,在下载到本机的上午编辑的pas代码
在我机器上用free pascal调试的时候
证明了可以读状态以中断后继续
mathe
发表于 2008-7-29 08:38:19
你们现在达到最大的数字是多少?如果假设可以运行一个月,估计能够达到多大的数据?
mathe
发表于 2008-7-29 08:40:02
原帖由 无心人 于 2008-7-28 17:00 发表 http://bbs.emath.ac.cn/images/common/back.gif
出现问题了
把代码搞丢了
icc -fast -msse2 square.c -o square.c
...
呵呵,Linux上面这个错误很容易犯;P我犯过多次
我有一次还使用了命令 rm -f .
无心人
发表于 2008-7-29 10:45:04
呵呵
不过linux下还是相对比较方便的呢
最大的数字GxQ运行38个小时得到的
我打算突破他的结果
昨天有了新的想法
准备抛弃所有的异常处理
反正几年内不会出现数据溢出的
呵呵
等超越了GxQ的结果后,把程序改进下,继续挂
一个月能计算到5X10^26
无心人
发表于 2008-7-29 10:45:52
如果是GxQ的机器和优化的C代码
则可达到10^28
Square.Log
在逼近GxQ结果
程序启动: 2008-7-28 11:24:29
完成初始化: 2008-7-28 11:24:29
2008-7-28 11:24:29: 1 1
2008-7-28 11:24:29: 4 4
2008-7-28 11:24:29: 9 9
2008-7-28 11:24:29: 7 16
2008-7-28 11:24:29: 13 49
2008-7-28 11:24:29: 10 64
2008-7-28 11:24:29: 16169
2008-7-28 11:24:29: 19289
2008-7-28 11:24:29: 18576
2008-7-28 11:24:29: 22 1849
2008-7-28 11:24:29: 27 3969
2008-7-28 11:24:29: 25 4489
2008-7-28 11:24:29: 31 6889
2008-7-28 11:24:29: 28 17956
2008-7-28 11:24:29: 34 27889
2008-7-28 11:24:29: 36 69696
2008-7-28 11:24:29: 40 97969
2008-7-28 11:24:29: 37 98596
2008-7-28 11:24:29: 43 499849
2008-7-28 11:24:29: 46 698896
2008-7-28 11:24:29: 451887876
2008-7-28 11:24:29: 492778889
2008-7-28 11:24:29: 524999696
2008-7-28 11:24:29: 549696996
2008-7-28 11:24:29: 55 19998784
2008-7-28 11:24:29: 58 46689889
2008-7-28 11:24:29: 61 66699889
2008-7-28 11:24:29: 63 79869969
2008-7-28 11:24:29: 64 277788889
2008-7-28 11:24:29: 67 478996996
2008-7-28 11:24:29: 70 876988996
2008-7-28 11:24:29: 73 1749999889
2008-7-28 11:24:29: 72 3679999569
2008-7-28 11:24:29: 76 5599977889
2008-7-28 11:24:29: 79 7998976969
2008-7-28 11:24:30: 81 8998988769
2008-7-28 11:24:30: 8217999978896
2008-7-28 11:24:30: 8536799899889
2008-7-28 11:24:30: 8888998998929
2008-7-28 11:24:30: 90 297889998849
2008-7-28 11:24:30: 91 299879997769
2008-7-28 11:24:30: 94 897977978689
2008-7-28 11:24:30: 97 975979998889
2008-7-28 11:24:30: 100 2699997789889
2008-7-28 11:24:30: 99 3957779999889
2008-7-28 11:24:30: 103 9879498789889
2008-7-28 11:24:30: 106 9998768898889
2008-7-28 11:24:30: 108 29998985899689
2008-7-28 11:24:30: 109 85986989688889
2008-7-28 11:24:30: 112 97888999968769
2008-7-28 11:24:31: 115386999898769969
2008-7-28 11:24:31: 117429998989997889
2008-7-28 11:24:31: 118578889999977689
2008-7-28 11:24:32: 121898999897988929
2008-7-28 11:24:32: 124 1959999889996996
2008-7-28 11:24:33: 127 3699998989898689
2008-7-28 11:24:35: 126 6788999798879769
2008-7-28 11:24:36: 130 9895699989899689
2008-7-28 11:24:43: 133 38896878989988889
2008-7-28 11:24:43: 136 38999699989995889
2008-7-28 11:24:47: 135 67699789959899889
2008-7-28 11:25:00: 139 188997899869998769
2008-7-28 11:25:07: 142 279869897899999969
2008-7-28 11:25:19: 144 498999778899898896
2008-7-28 11:25:40: 148 989879999979599689
2008-7-28 11:26:06: 1451877896979979898969
2008-7-28 11:27:27: 1535899989587897999889
2008-7-28 11:27:44: 1516979497898999879969
2008-7-28 11:28:08: 1548899988895999696889
2008-7-28 11:30:56: 157 28979978999958969889
2008-7-28 11:35:38: 160 78897999969769888996
2008-7-28 11:36:25: 162 87989899898866889889
2008-7-28 11:42:54: 163 199989299899788979969
2008-7-28 11:52:44: 166 449998999899988698769
2008-7-28 12:02:57: 171 789899899796987988996
2008-7-28 12:07:14: 169 969988797999759789889
2008-7-28 12:47:35: 172 3599979999987777888889
2008-7-28 13:01:41: 175 4899976999986989889796
2008-7-28 13:36:48: 178 8889998799995887887889
2008-7-28 13:44:25: 180 9899698989999989958489
2008-7-28 14:33:48: 18117989999975899879969889
2008-7-28 17:11:58: 18457997787999988988979689
2008-7-28 17:17:05: 18759668999996988999989969
2008-7-29 0:13:50: 189 289959998978968689899889
2008-7-29 6:21:06: 190 649969889997895999999489
2008-7-29 9:02:09: 193 857799969779899989969889
2008-7-29 18:32:59: 196 1679898987989978888999689
2008-7-30 12:23:02: 198 3899689979989899957996996
2008-7-30 18:46:57: 199 4899999899498984599899889
[ 本帖最后由 无心人 于 2008-7-30 20:03 编辑 ]
无心人
发表于 2008-7-29 20:09:33
对96#的一点想法
目前来说计算到10^32是比较难的事情
考虑这个极限
则加Delta实际上仅需要最多加四个就可以了
考虑计算到10^24时间不很长
则运行时间最长的部分就是加四个Delta的了
是否可以SIMD加一次完成?
在考虑汇编加速的可能
因为GxQ的代码也只是一秒处理4000万
处理完全部的10^32需要8年啊
还能提速吧
gxqcn
发表于 2008-7-29 20:25:41
原帖由 无心人 于 2008-7-29 20:09 发表 http://bbs.emath.ac.cn/images/common/back.gif
对96#的一点想法
目前来说计算到10^32是比较难的事情
考虑这个极限
则加Delta实际上仅需要最多加四个就可以了
考虑计算到10^24时间不很长
则运行时间最长的部分就是加四个Delta的了
是否可以SIMD加一次完成?
...
在 96# 中已考虑到这点了,
我在“UINT32 pool”之前还特意用了关键字“__declspec(align(16))”(VC6.0不支持该关键字),
就是方便启用SIMD优化(包括手工直接嵌入汇编),
但提速的程度不会太大,最多不过是将8年缩短为两年。:*-^
无心人
发表于 2008-7-29 20:27:36
:)
确实不大
目前看,不可能压缩到2年
哎
不知道有更好的算法么
我分析intel产生的汇编
看不明白
郁闷