1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GIMPSをLinuxで実行する

Posted at

はじめに

GIMPS(Great Internet Mersenne Prime Search [ 公式サイト ][ Wikipedia ]) はメルセンヌ素数の発見を目的とした分散コンピューティングプロジェクトである。

備忘録的に、Linuxでの実行までの設定を記載しておく。

基礎知識

GIMPSでは、メルセンヌ数が素数であるかを判断するために、素因数分解アルゴリズムである

  • 試し割(TF)
  • P-1法(PM1)

を実行し、その時点で合成数と分かったものは、次工程に進まないようにしている。なので、メルセンヌ素数を直接的に見つける以外にも、こういった枝刈り工程で貢献することももちろん可能だ。ただし、試し割はCPUで実行するよりもGPUで実行した方が格段に速いので、今回紹介するプログラムで試し割を選ぶことは推奨されていない。

さて、これらの前処理を突破したメルセンヌ数は、本格的に素数チェックが行われる。そのための確定的アルゴリズムとしてLucas–Lehmer法(LL)が知られている。従来はLLを2回実行し、計算結果が一致することをもって完了としていた(1回目のチェックがLL、2回目のチェックがD(ダブルチェック)と呼ばれる)。

しかし、バージョン30.3から方法が変わり、2021年4月には1回目のLLは使用は収束した。これまで、LLの計算結果が正しいことを検証しようとすると、同じ計算を再度実行するしかなかったが、バージョン30.3からは、LLを実行しつつ、その計算内容が正しいことの証拠を作成するようになった。これによって、2回目のチェックは単にLLを再実行するのではなく、証拠を検証することに変わり、計算量が劇的に減った。GIMPS内では、この新しい1回目のチェックをPRP、2回目のチェックをCERTと呼んでいる。とは言え、これまでのLLではほとんど発生しなかったディスクへの書き込みや、ネットワーク通信(先ほど述べた証拠を保管し、サーバーに送信するため)が発生することに注意する。

手順

アカウント登録

他の記事を参考のこと。

ダウンロード

まず、ダウンロードするディレクトリを作って、そこに移動しておく。ここでは、mprime とする。

mkdir mprime
cd mprime

最新バージョンはここから確認できる。2022年2月6日現在は、30.7b9が最新だ。

wget https://www.mersenne.org/ftp_root/gimps/p95v307b9.linux64.tar.gz

解凍し、元ファイルを削除する。

tar -xf p95v307b9.linux64.tar.gz
rm p95v307b9.linux64.tar.gz

なお、更新する場合は、プログラムを一旦止めて( killall mprime )、上書きすればよい。

tar --overwrite -xf p95v307b9.linux64.tar.gz

基本的な設定

./mprime を初めて実行すると設定が始まる。基本的にデフォルトのままでいいので、エンターを連打する。

Join Gimps? (Y=Yes, N=Just stress testing) (Y):
Use PrimeNet to get work and report results (Y):

アカウント作成時のIDを入力する。匿名(ANONYMOUS)で良ければエンター。また、PCの名前を設定できる。これは複数台のPCを使う場合に、どのPCからの結果なのかをユーザが判断できるようにするためのものだ。ただし、この名前は全体にも公開される。

Your user ID or "ANONYMOUS" (ANONYMOUS):
Optional computer name:

脳死でエンター。

Computer uses a dial-up connection to the Internet (N):
Use a proxy server (N):
Output debug info to prime.log (0=none, 1=some, 2=too much) (0):
Accept the answers above? (Y):
Hours per day this program will run (24):
Accept the answers above? (Y):
Temporary disk space limit in GB/worker (6.000000):
Daytime P-1/P+1/ECM stage 2 memory in GB (0.300000):
Nighttime P-1/P+1/ECM stage 2 memory in GB (0.300000):
Upload bandwidth limit in Mbps (0.250000):
Upload large files time period start (00:00):
Upload large files time period end (24:00):
Download limit for certification work in MB/day (40):
Skip advanced resource settings (Y):
Accept the answers above? (Y):

何並列で動かすか? 個人の好みで。

Number of workers to run (3):

作業のタイプが選べる。メルセンヌ素数を見つけたければ、150あるいは152を設定すればよい。なお、初めて動かした場合は、そのCPUの信頼性をチェックする意味で、ダブルチェックのタスクが割り当てられるので、いきなりメルセンヌ素数のチェックが動かなくとも慌てない。

Use the following values to select a work type:
  0 - Whatever makes the most sense
 150 - First time prime tests
  152 - World record sized numbers to prime test
  151 - Double-check prime tests
  2 - Trial factoring
  4 - P-1 factoring
  153 - 100 million digit numbers to prime test
  160 - First time PRP on Mersenne cofactors
  161 - Double-check PRP on Mersenne cofactors
  5 - ECM for first factors of Mersenne numbers
  8 - ECM on Mersenne cofactors
  6 - ECM on Fermat numbers
  1 - Trial factoring to low limits

Type of work to get (0):

使用するコア数。お好みに応じて。

CPU cores to use (multithreading) (4):
Get occasional proof certification work (Y):
Accept the answers above? (Y):

設定が終わると自動的にタスクを取得し、計算を始める。以降の設定が必要であれば、一旦プログラムを終了する。

詳細な設定

設定はprime.txtlocal.txtに記載する。プログラム中で設定できる項目もあるが、そうでないものもある。詳細はreadme.txt及びundoc.txtを参照のこと。

prime.txt

ベンチマークがちょくちょく自動実行される。それを止めさせる設定。

AutoBench=0

P-1とECMの実行は、ステージ1と2に分かれる。普通は、ステージ毎にgcd(因数分解できるかのチェック。最大公約数)を求めるが、どうせステージ1で見つからないと思うなら、省くことも可能だが、たぶん、一般人は設定しなくともよい項目。

Stage1DCD=0

もう、GIMPSへの貢献を止めたいと思ったとき、既に割り当てられているタスクを解除したい。それ自体はメニューからUnreserve Exponentで実現できるものの、そのままだとリソースが空いたと思われて、新しいタスクを自動で取得しようとする。止める場合は、NoMoreWorkを設定してからUnreserve する。

※ユーザ登録している場合は、webの画面からも割り当てを解除できる。

NoMoreWork=1

local.txt

初期設定時でも変更できるが、WorkerDiskSpaceは、使用ディスクサイズの上限、Memoryは使用メモリサイズの上限を指定する。ディスクはPRP時に、メモリはP-1とECMのステージ2で主に使用され、もちろん、多いに越したことはないが、PCのスペックに合わせて設定する。

自動起動

立ち上げ時に自動でmprimeが起動するようにする。

boot.sh
nohup /home/mprime/mprime -d >>/home/mprime/mprime.log 2>&1 < /dev/null &
chmod +x /home/mprime/boot.sh
crontab -e
@reboot /home/mprime/boot.sh

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?