pari/gp の起動オプション

ここでは、「pari/gp の起動オプション」 に関する記事を紹介しています。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Pari/gpの起動オプションについて簡単なまとめ

環境は
NEC Express5800 110Ge(CPU Core2Quad Q9550、Memory:8GB)上で、
VMware Player 3 仮想マシンのMemory:4GB
ホストOS:WIndows Xp Professional x64
ゲストOS:CentOS 5.4(64bit)
な環境。pari/gp 2.3.5使用。

オプション一覧は次のようにして確認。

$ gp --help
### Usage: gp [options] [GP files]
Options are:
[-f,--fast] Faststart: do not read .gprc
[-q,--quiet] Quiet mode: do not print banner and history numbers
[-p,--primelimit primelimit]
Precalculate primes up to the limit

[-s,--stacksize stacksize]
Start with the PARI stack of given size (in bytes)

[--emacs] Run as if in Emacs shell
[--help] Print this message
[--test] Test mode. No history, wrap long lines (bench only)
[--texmacs] Run as if using TeXmacs frontend
[--version] Output version info and exit
[--version-short] Output version number and exit

今回は -p と -s についてみてみた。

[-p,--primelimit primelimit]
Precalculate primes up to the limit
について

gpは起動時に素数を計算する。(gp2.3.5(64bit)はデフォルトで50万以下の素数)起動時に素数の個数を変更するには-pオプションを利用。
(起動後に変更するにはdefault(primelimit,****)を利用。詳細は橋本先生のページを参照)

書式(primelimitを10000000に設定して起動する例)

$ gp -p 10000000
あるいは
$ gp --primelimit 10000000



以下は実行例。


デフォルト起動:

$ gp --version-short
2.3.5
$ gp
(中略)
parisize = 100000000, primelimit = 500000
? prime(41581)
%1 = 500509
? prime(41582)
*** prime: not enough precomputed primes

とある。すなわち500000程度以下の素数のリストを、gp起動時にあらかじめ計算しているということ。



primelimitに1000万を設定:

$ gp -p 10000000
(中略)
parisize = 8000000, primelimit = 10000000
? prime(664605)
%1 = 10000511
? prime(664606)
*** prime: not enough precomputed primes

これなら10000000程度以下の素数を扱える。





primelimitに100億を設定メモリを500MB程度消費。実行注意):

$ gp -p 10000000000
(中略)
? prime(455052530)
%1 = 10000000501
? prime(455052531)
*** prime: not enough precomputed primes

32bitを越えて100億まで設定できてしまった。primelimitの設定可能な最大値は、64bit版だと事実上無制限なのか?
(32bit版のpari/gp 2.3.4ではprimelimit=4294965249=2^32-2^11+1まで。prime(203280156) = 4294965757が限界)

このときメモリは4~500MB 食っている

$ ps aux|grep gp
**** 13958 44.3 11.0 530480 447652 pts/1 S+ 14:54 0:48 gp -p 10000000000





primelimitに1000億を設定メモリを4GB程度消費。実行注意!!!):

$ gp -p 100000000000
(中略)
parisize = 8000000, primelimit = 100000000000
?

この環境でprime(4000000000)を実行してみたが、スワップばかりで返答が帰ってこないので実行中止。

$ ps aux|grep gp
**** 14705 40.0 81.3 4107656 3291916 pts/1 S+ 15:14 7:56 gp -p 100000000000

起動に8分近く掛かっている上、メモリも4GB近く食い潰している。起動で精一杯、精魂つき果てすぎ。ちーん。






[-s,--stacksize stacksize]
Start with the PARI stack of given size (in bytes)
について

これはスタックサイズの設定オプション。大きな配列を確保するときなどはこれを変更。
起動後に変更するには allocatemem() で。

$ gp
(中略)
parisize = 8000000, primelimit = 500000

デフォルトのスタックサイズは8000000だとのこと。
とりあえずいま不便は感じないので、これについてはまたいつか。

$ gp
GP/PARI CALCULATOR Version 2.3.5 (released)
amd64 running linux (x86-64 kernel) 64-bit version
compiled: Feb 13 2010, gcc-4.1.2 20080704 (Red Hat 4.1.2-46)
(readline v5.1 enabled, extended help available)

Copyright (C) 2000-2006 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.
Type ?12 for how to get moral (and possibly technical) support.

parisize = 8000000, primelimit = 500000

な環境。
スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://tekitobibouroku.blog42.fc2.com/tb.php/210-6f2b1dea
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。