y-cruncherという有名な円周率計算ソフトがあります。Windows版以外に、Linux版もあるので、試しにUbuntu22で動かしてみました。pythonで出来るだけ高速に大きな桁の円周率を求める方法を調べていたのですが、y-cruncherを実行して出力をそのまま利用するのが手っ取り早いかな。
1. ダウンロード:
ここからダウンロードします。
y-cruncher - A Multi-Threaded Pi Program (numberworld.org)
2. tarを解凍
ダウンロードしたファイルを解凍します。
tar -xvf y-cruncher~省略.tar.xz
3. 実行
解凍したディレクトリーへ移動し、以下のコマンドで実行してみます。
./y-cruncher custom pi -dec:1000
結果
無事に実行されれば、ターミナルにいろいろと表示されます。実行結果がテキストファイル(例: Pi - 20230828-115025.txt。実行した年月日時分秒.txtという形)に出力されます。1000桁だと一瞬(0.001 seconds)で終わりました。
1億桁でもやってみましたが、34.033 secondsでした。さすがに速い。使用メモリ量も表示してくれます。1億桁でTotal Memory: 523,114,624 ( 499 MiB)でした。環境にもよりますが、私の環境では10億桁くらいまでは普通に実行できそうです。
計算された円周率は、Pi - Dec - Chudnovsky.txt、Pi - Hex - Chudnovsky.txtというテキストファイルに保存されています。桁数に応じてファイルサイズが大きくなるのでご注意。1億桁だと95.4MBになってました。実行するたびに上書きされるので、桁数を変えたものを残したい場合は、都度リネームしておきましょう。
環境:
せっかくなのでy-cruncherの実行結果ファイルから引用
Benchmark Validation File - DO NOT MODIFY! If you do, it will fail validation. Validation Version: 1.3 Program: y-cruncher v0.8.1 Build 9517 Tuning: 08-NHM ~ Ushio User: None Specified - You can edit this in "Username.txt". Operating System: Linux 5.19.0-46-generic x86_64 Processor(s): Name: AMD Ryzen 7 5825U with Radeon Graphics Logical Cores: 4 Physical Cores: 4 Sockets: 1 NUMA Nodes: 1 Base Frequency: 1,997,161,280 Hz Motherboard: Manufacturer: Oracle Corporation Model: VirtualBox Version: 1.2 Serial Number: Suppressed - Personally identifiable information is opt-in only. Memory: Usable Memory: 8,320,471,040 (7.75 GiB) Total Memory: Unable to Detect Constant: Pi Algorithm: Chudnovsky (1988) Decimal Digits: 1,000 Hexadecimal Digits: 831 Computation Mode: Ram Only Threading Mode: Push Pool -> 4 / ? (randomization on) Working Memory: 1,572,096 (1.50 MiB) Total Memory: 30,538,752 (29.1 MiB)
参考:画面キャプチャ