円周率BBP系公式summary
BBP系公式では、16進数表記の円周率を任意の桁から求めることができます。
最初は円周率小数点第2000兆桁目を求めることにチャレンジしました。
【GPUで円周率計算】2000兆桁目からが本当に653728f1で合ってるか検算してみた
同様のコードを使い現在2京桁の結果まで出ています。
計算に使ったプログラムはここにあります。
https://github.com/toropippi/CLBellard
2000兆桁
結果を得るまでに、複数のGPUをおよそ10日間くらい稼働させました。
1st :starting at 2×10^15
2nd :starting at 2×10^15-5
1st run: 653728f1d92ef9802795ab97da55a474f01a254eb8b11447
2nd run: 28fec653728f1d92ef9802795ab97da55844e0400db36fce
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ということで
653728f1d92ef9802795ab97da55
まで正確ということでよさそうです。
元の情報をたどると
http://www.karrels.org/pi/index.html
ここに小数点第2000000000000000桁目から653728f1と書いてあり、同じ結果になったことが分かります。
計算時間
1st run
計算デバイス名 |
仕事量(batch数) |
計算時間(day) |
1batchあたりの計算時間(sec) |
TITAN V |
15230 |
15.0496 |
85.3765 |
RTX 2080 Ti |
16533 |
15.0457 |
78.6273 |
GeForce GTX 1080 |
2649 |
10.9352 |
356.6645 |
GeForce MX150 |
145 |
4.0682 |
2424.0718 |
RX480 |
1904 |
15.0051 |
680.9054 |
Radeon HD7990(1) |
1787 |
15.0629 |
728.2776 |
Radeon HD7990(2) |
1790 |
15.0590 |
726.8697 |
Intel Xeon Platinum 8280 |
605 |
2.1073 |
300.9426 |
Intel(R) Core(TM) i7-9800X |
45 |
4.0323 |
7741.9661 |
Intel(R) Core(TM) i7-8700K |
40 |
3.8095 |
8228.4962 |
Intel(R) Core(TM) i7-6700 |
19 |
3.2438 |
14750.8674 |
エラー発生回数
GPU名 |
エラー回数 |
内訳 |
RTX2080 1台目 |
0 |
|
RTX2080 2台目 |
0 |
|
TITAN V |
0 |
|
GTX 1080 |
16 |
OCしたら0を出力1回。OCしたらINFを出力15回。 |
RX 480 |
2 |
ディスプレイドライバ停止が原因で0を出力1回。謎の1bit反転1回 |
HD 7970 |
7 |
ディスプレイドライバ停止が原因で0を出力2回+適当な値を出力5回 |
このように計算エラーは1つを除いて、GPU側の原因というよりはレジストリ設定不足と下手なオーバークロックをしていた人間側のせいでした。
ディスプレイドライバ停止とは、OSがWindowsの時に画面描画を担当するGPUが計算タスクでいっぱいになり画面の更新が2秒以上とまった場合にOSがドライバーを強制終了してしまうことで、これは
https://support.borndigital.co.jp/hc/ja/articles/360000574634
このようにレジストリをいじることで回避できます。
オーバークロックに伴うエラーについては、GTX 1080をMSI Afterburnerでだいたい100-200Mhzくらいオーバークロックしていました。FAN 100%にして常用しているときは温度も75度前後で見た目エラーを吐いてるように見えなかったですが、後で確認すると2時間に1回くらいの微妙なペースでエラーを吐いていることが分かりました。それが分かってからはオーバークロックなしでFAN speedだけ100%にして計算させたところ、エラーが止まりました。
RX480で起こった1bit反転については2週目の計算結果を待つまでわかりませんでした。1STEP目の2246Batch目で1回だけ起こっていました。
1週目 RX 480で計算 不正解
1cc4c98275c5a6b07aa292・・・
^^
2週目 RTX 2080Tiで計算 正解
1cc4ca0275c5a6b07aa292・・・
^^
こんな感じに、左から6,7桁目がずれていました。差はa0-98=02です。プログラム上ではメモリに計算結果を加算していくような形にしていたため最終的には2桁にわたってずれていますが、差をとってみると2という数字がでてきました。
当初は宇宙線によるbit反転を疑っていましたが、その後2京桁の計算まで1,2年近く稼働させても1台も1度も起こらなかったことを考えると、確率的に宇宙線の可能性も低そうです。
もちろん確率の問題で起こるものなので真相は不明です。
4000兆桁
1st :starting at 4×10^15
2nd :starting at 4×10^15-5
1st run: 5cc37dec84c20b798ba57faf5c691f340665147606e69360
2nd run: 06df35cc37dec84c20b798ba57faf5c6919f33dfbba887cb
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ということで16進4000兆桁目から
5cc37dec84c20b798ba57faf5c691
まで正確ということでよさそうです!
最初に計算した人達のサイトを見ると
http://www.karrels.org/pi/
4×10^15桁目から5cc37dec・・・と書いてあるのでこちらも合っていることが確認できます。
計算時間
1st run
計算デバイス名 |
仕事量(batch数) |
計算時間(day) |
1batchあたりの計算時間(sec) |
TITAN V |
28651 |
26.5747 |
80.1387 |
RTX 2080 Ti 1台目 |
22645 |
24.2289 |
92.4433 |
RTX 2080 Ti 2台目 |
23512 |
23.4281 |
86.0916 |
GeForce GTX 1080 |
3938 |
15.0144 |
329.4174 |
GeForce MX150 |
613 |
16.1817 |
2280.7476 |
RX 480 |
292 |
6.2486 |
1848.8893 |
Radeon HD7970 |
21 |
0.1667 |
685.9090 |
Radeon HD7990(1) |
826 |
7.0987 |
742.5235 |
Radeon HD7990(2) |
803 |
6.9172 |
744.2681 |
Intel(R) Core(TM) i7-8700K |
93 |
8.4222 |
7824.5196 |
Intel(R) Core(TM) i7-6700 |
100 |
16.1130 |
13921.5966 |
2nd run
計算デバイス名 |
仕事量(batch数) |
計算時間(day) |
1batchあたりの計算時間(sec) |
TITAN V |
33196 |
28.3424 |
73.7673 |
RTX 2080 Ti 1台目 |
26353 |
28.3446 |
92.9296 |
RTX 2080 Ti 2台目 |
10058 |
9.9851 |
85.7740 |
GeForce GTX 1080 |
5979 |
23.5984 |
341.0101 |
GeForce MX150 |
646 |
17.3945 |
2326.4405 |
RX 480 |
1310 |
24.3160 |
1603.7390 |
Radeon HD7990(1) |
1885 |
16.3979 |
751.6063 |
Radeon HD7990(2) |
1871 |
16.2705 |
751.3466 |
Intel(R) Core(TM) i7-9800X |
161 |
22.4589 |
12052.4544 |
Intel(R) Core(TM) i7-6700 |
35 |
5.4780 |
13522.7997 |
エラー発生回数
1週目、2週目ともに計算エラーは1回もありませんでした。
1京桁
1st :starting at 1×10^16
2nd :starting at 1×10^16-5
1st run: 9077e0164b9c613fd6c7f170c99c2a6694e2534bb43554f2
2nd run: dc2ca9077e0164b9c613fd6c7f170c99b89a3fd63770a838
^^^^^^^^^^^^^^^^^^^^^^^^^^^
最初に計算した人達のサイトを見ると
http://www.karrels.org/pi/
1×10^16桁目から9077e016・・・と書いてあるのでやはり合っていることが確認できました。
計算時間
1st
計算デバイス名 |
仕事量(batch数) |
計算時間(day) |
1batchあたりの計算時間(sec) |
TITAN V |
36044 |
74.7369 |
179.1497 |
RTX 2080 Ti |
40020 |
76.0336 |
164.1504 |
GeForce GTX 1080 |
8024 |
68.0098 |
732.3094 |
GeForce MX150 |
775 |
47.4612 |
5291.1579 |
RX 480 |
4122 |
68.0126 |
1425.5917 |
Radeon HD7990(1) |
3500 |
61.0028 |
1505.8988 |
Radeon HD7990(2) |
3111 |
54.2288 |
1506.0642 |
Radeon HD7970 |
405 |
7.0508 |
1504.1662 |
Intel(R) HD Graphics 530 |
22 |
11.1253 |
43691.9852 |
Intel Xeon Platinum 8280 |
5017 |
37.0838 |
638.6362 |
Intel(R) Core(TM) i7-9800X |
334 |
62.9926 |
16295.0811 |
Intel(R) Core(TM) i7-8700K |
323 |
72.2272 |
19320.2111 |
Intel(R) Core(TM) i7-6700 |
167 |
59.2375 |
30647.4055 |
2nd
計算デバイス名 |
仕事量(batch数) |
計算時間(day) |
1batchあたりの計算時間(sec) |
TITAN V |
36706 |
76.6756 |
180.4819 |
RTX 2080 Ti |
40071 |
76.6762 |
165.3272 |
GeForce GTX 1080 |
8363 |
70.8972 |
732.4548 |
NVIDIA TESLA P100 × 4 |
3230 |
5.7035 |
152.5652 |
GeForce MX150 |
675 |
46.9053 |
6003.8728 |
RX 480 |
4321 |
71.4105 |
1427.8786 |
Radeon HD7990(1) |
3988 |
72.2556 |
1565.4182 |
Radeon HD7990(2) |
4112 |
72.2894 |
1518.9220 |
Intel(R) Core(TM) i7-9800X |
235 |
24.8482 |
9135.6761 |
Intel(R) Core(TM) i7-8700K |
5 |
1.5362 |
26545.4150 |
Intel(R) Core(TM) i7-6700 |
156 |
56.0793 |
31059.2802 |
エラー発生回数
2周目でエラーが発生
GPU名 |
エラー回数 |
内訳 |
TITAN V |
0 |
|
RTX 2080 Ti |
0 |
|
GeForce GTX 1080 |
0 |
|
NVIDIA TESLA P100 × 4 |
10 |
原因不明で適当な値を出力 |
GeForce MX150 |
0 |
|
RX 480 |
0 |
|
Radeon HD7990(1) |
0 |
|
Radeon HD7990(2) |
0 |
|
Intel(R) Core(TM) i7-9800X |
0 |
|
Intel(R) Core(TM) i7-8700K |
0 |
|
Intel(R) Core(TM) i7-6700 |
0 |
|
NVIDIA TESLA P100 × 4のノードで2020/11/5 17:38〜18:07に連続して間違った答えを出すことがありました。時間が限られかつ再現性があり一時的な障害だったのでしょう。
2京桁
1st :starting at 2×10^16
2nd :starting at 2×10^16-5
1st run: 1021b52fb719ada36b81d6cecc98c054857239d9519210bd
2nd run: 509ab1021b52fb719ada36b81d6cecc977ecf558fb98fddf
^^^^^^^^^^^^^^^^^^^^^^^^^^^
計算時間
1st
計算デバイス名 |
仕事量(batch数) |
計算時間(day) |
1batchあたりの計算時間(sec) |
RTX 3080 |
12 |
0.0300 |
215.8848 |
TITAN V |
45210 |
95.2231 |
181.9792 |
RTX 2080 Ti 1台目 |
47621 |
85.9455 |
155.9331 |
RTX 2080 Ti 2台目 |
49683 |
95.0533 |
165.3001 |
GeForce GTX 1650 |
6055 |
49.3680 |
704.4424 |
NVIDIA TESLA P100 × 4 |
24174 |
42.8141 |
153.0215 |
GeForce GTX 1080 |
10282 |
96.1031 |
807.5576 |
GeForce MX150 |
679 |
44.8758 |
5710.2697 |
RadeonZ |
18778 |
71.7219 |
330.0017 |
RX 480 |
378 |
6.2967 |
1439.2505 |
Radeon HD7990(1) |
210 |
3.7267 |
1533.2791 |
Radeon HD7990(2) |
209 |
3.7163 |
1536.2982 |
Intel(R) Core(TM) i7-9800X |
179 |
19.1038 |
9221.0733 |
Intel(R) Core(TM) i7-8700K |
76 |
19.6601 |
22350.4295 |
Intel(R) Core(TM) i7-6700 |
182 |
65.5758 |
31130.4901 |
2nd
計算デバイス名 |
仕事量(batch数) |
計算時間(day) |
1batchあたりの計算時間(sec) |
TITAN V |
23738 |
102.0008 |
371.2558 |
RTX 2080 Ti 1台目 |
27584 |
100.4008 |
314.4805 |
RTX 2080 Ti 2台目 |
26062 |
102.0299 |
338.2466 |
GeForce GTX 1650 |
6062 |
100.1019 |
1426.7243 |
GeForce GTX 1080 |
5315 |
102.0635 |
1659.1315 |
GeForce MX150 |
195 |
28.3941 |
12580.7882 |
RadeonZ |
12908 |
99.2752 |
664.5009 |
エラー発生回数
2周目でエラーが発生
GPU名 |
エラー回数 |
内訳 |
TITAN V |
0 |
|
RTX 2080 Ti 1台目 |
0 |
|
RTX 2080 Ti 2台目 |
0 |
|
GeForce GTX 1650 |
0 |
|
GeForce GTX 1080 |
0 |
|
GeForce MX150 |
0 |
|
RadeonZ |
10 |
原因不明で適当な値を出力 |
温度の関係でしょうか。RadeonZで3/28〜4/1にかけて断片的に間違った答えを出すことがありました。
10京桁
1st :starting at 1×10^17
2nd :starting at 1×10^17-5
1st run: a937eb59439e485e2eb4f5feb78200a79e7733cb7f9973CC
2nd run: dd8eca937eb59439e485e2eb4f5feb7820235a649cc1f348
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
計算時間
1st
2nd
|