多倍長計算

ここでは、「多倍長計算」 に関する記事を紹介しています。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
gmp 4.2.2 を intel compiler 10 で再コンパイルの記事を参考にやってみた。(この時は一般ユーザでやった関係で、prefixなどの設定をしていたが、今回は不要。)

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

# uname -a
Linux localhost.localdomain 2.6.18-164.11.1.el5.centos.plus #1 SMP Wed Jan 20 18:49:35 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
# cat /proc/cpuinfo|grep name
model name : Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz
model name : Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz
model name : Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz
model name : Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz



やった手順は次のとおり。

# ./configure CC="icc -no-gcc" CFLAGS="-O3"
# make
# make check
# checkinstall

これで /usr/src/redhat/RPMS/x86_64/gmp-5.0.1-1.x86_64.rpm が出力された。
スポンサーサイト
筑波大学計算科学研究センターのT2K筑波システムによって、円周率計算の世界記録が更新されました。

1次情報は筑波大計算科学研究センターの高橋大介准教授のWebページから。
円周率2兆5769億8037万桁計算の結果について
http://www.hpcs.is.tsukuba.ac.jp/~daisuke/pi-j.html


http://www.tsukuba.ac.jp/topics/20090819133359.html
http://www.tsukuba.ac.jp/public/press/090817.pdf



これによると、主計算ではガウスルジャンドルアルゴリズム、検証計算ではボールウェインの 4 次の収束アルゴリズムを使用したとのこと。80年代からよく用いられてきた公式だ。
円周率の歴史 - Wikipedia

円周率の公式は、次が詳しい。(松元隆二氏)
円周率の公式集 暫定版 Ver. 3.141

ooura FFTで有名な大浦先生による円周率計算の解説。公式から多倍長の高速乗算についての解説まで詳しく記述されている。
円周率の公式と計算法(大浦拓哉先生)







筑波大が円周率計算で世界記録 2兆5769億けた

 筑波大学計算科学研究センターは17日、スーパーコンピューターによる円周率の計算で、2兆5769億8037万けたの世界記録を樹立したと発表した。

 これまでの世界記録は2002年に東京大と日立製作所のグループが計算した1兆2411億けたで、今回はその記録を2倍以上更新。筑波大は今月10日にギネスブック登録を申請した。

 計算したのは、同センターの高橋大介准教授。640台のコンピューターをつなぎ、最大で毎秒95兆回の演算処理ができる米国社製のスーパーコンピューター「T2K筑波システム」を使い、今年4月に主計算と検証計算を2回に分けて行った。所要時間は計73時間36分で、02年の記録樹立時(計約600時間)の約8分の1と大幅に短縮された。

 計算で使ったプログラムの一部は今後一般公開する予定で、高橋准教授は「今回の成果は、物理学や化学分野の計算の大幅な高速化にも応用できる」と話している。
2009/08/17 19:28 【共同通信】



[円周率世界記録樹立(筑波大 T2K、π:2兆5769億8037万桁)]の続きを読む
高速な多倍長演算ライブラリであるGMP(GNU MP)についてのまとめメモ。

本家(最新バージョンは4.2.4)

GMPの使い方(studio kamadaさん) Windows環境のCygwin上でGMPをインストールする方法が解説されています。
GMPを使ってみる(WebLab.otaさん) 「Code::Blocksでライブラリを使う」という記事が参考になりました。
教えて! Watch :改善すべき点を教えてください。 GMPを使ったプログラムのサンプルあり
GMPメモ gentoo向けの説明あり
GMP関係の覚え書き (GMP(The GNU MP Bignum Library)をBCBで使用する方法 )
Windows上で,GMP, NTL(多倍長整数ライブラリ)を使う。
PHPからGMPを使ってメルセンヌ素数を探す


円周率.jp > 多数桁計算 多倍長計算の解説が面白い

[Ruby][Perl][Python] 多倍長整数演算の速度比較
素数生成アルゴリズムの調査・開発 調査報告書 GMPとの速度比較あり
多倍長演算ライブラリ GMP のベンチマーク GMPbench 0.1 の結果:
第4章多倍長計算 速度比較あり。

Linux Conference 2002より
多倍長数値計算についての考察 - GNU MP と BNCpaek プレゼンテーション
多倍長数値計算についての考察 - GNU MP と BNCpaek 配布資料

[GMP(GNU MP)メモ]の続きを読む
メモ。
SuperPIとライトアロケートキャッシュ

FFTと逆FFTをうまく組み合わせると、多桁の乗算の場合に限ってビット反転アクセスは不要になるのです(あ~れ~っ)。


多倍長演算ライブラリについての情報を探してみた。
まずはgoogleの検索結果:
C++ 多倍長整数

●一般
●UBASIC

●GMP

●NTL
本家:http://www.shoup.net/ntl/

2006-04-12 C++で多倍長整数

あと注意点として代入時の暗黙のキャストは行われるが、コンストラクタでの代入は明示的に変換関数to_ZZ()を呼ぶ必要あり。詳しくは公式ページの説明参照。



プログラミング言語 C++
NTLのインストール、多倍長整数計算の演習。丁寧。
(ZZ、ZZX、ZZ_p、ZZ_pX、ZZ_pE)


●SN Library
アセンブラを使わないC++による多倍長計算
SN library(gcc Version)




●多倍長以外も含めていろいろ
CPAN Distributions >> M >> Math 膨大なリンク

Mac Wiki 数値計算 多倍長に関してはNTLなどが紹介されている。

The Object-Oriented Numerics Page

# Multiprecision, arbitrary precision data types

* NTL, arbitrary length integers, vectors/matrices/polynomials over integers and over finite fields.
* EXTNUM, version of double which has the same number of mantissa bits as IEEE 754, but extends the exponent to have range from 10^-646456993 to 10^646456992.
* CLN, an extensive number library. Arbitrary precision integer, float, rational, polynomials, complex, modular integers, transcendental functions, assembly language kernels for some CPUs.
* MUNTL, Multiprecision unsigned number template library (C++).
* MPFUN++, a multiple precision floating point computation package in C++.
* LiDIA, A library for computational number theory. Provides a collection of highly optimized implementations of various multiprecision data types and time-intensive algorithms.
* Apfloat, a C++ High Performance Arbitrary Precision Arithmetic Package
* hfloat, An arbitrary precision package, optimized for very large (> 1000) (decimal) digit numbers.
* fPoint, a C++ class which helps convert floating-point arithmetic to fixed-point arithmetic by recommending range and precision requirements.
* doubledouble, a quad-precision (approximately 30 decimal place) floating point arithmetic class.






上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。