高精度線形代数演算ライブラリmpack 0.8.0の紹介

76
. . 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介 中田 真秀 理化学研究所 情報基盤センター 日本数式処理学会東北地区合同分科会@仙台青葉カルチャー センター 602 号室, 2013/1/27 10:40 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Upload: maho-nakata

Post on 18-Dec-2014

1.057 views

Category:

Technology


2 download

DESCRIPTION

高精度線形代数演算ライブラリMPACK 0.8.0の紹介

TRANSCRIPT

Page 1: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

.

...... 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

中田真秀理化学研究所情報基盤センター

日本数式処理学会東北地区合同分科会@仙台青葉カルチャーセンター 602号室, 2013/1/27 10:40

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 2: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

高精度線形代数演算ライブラリMPACK�� ��http://mplapack.sourceforge.net/中田真秀@理化学研究所

MPACK:高精度線形代数演算ライブラリ:BLAS,LAPACKをベース線形代数演算のビルディングブロック、参照実装、プログラムインターフェース (API)提供Version 0.8.0 (2012/12/25);ステータス: MBLAS完成, MLAPACK100ルーチン完成NVIDIA GPU C2050での DD精度の行列積の加速綿密なテスト: BLAS、LAPACKにあらゆる値を代入して行われるLinux/FreeBSD/Mac/Win/Intel Xeon Phi/NVIDIA C2050をサポート5つの高精度計算の型をサポート: GMP, MPFR,本物の 4倍精度(binary128), DD, QD,倍精度C++で書きなおした: プログラミングを容易にする。オープンソース: 2-条項 BSDライセンス、再配布、変更など ok!

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 3: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

中田のやりたいこと:コンピュータ上での線形代数演算おける精度問題を解決したい。

人類は、線形代数を有志以来やってきた。エジプトが最古(パピルス)、中国もガウスの消去法は 1000年以上前に知っていた (九章算術)。コンピュータが生まれ、線形代数演算をコンピュータ上で高速に、大量にやらせることが重要になった。これまで主にスピードおよび規模を追求してきた。これがコンピュータの歴史。いままで無視してきたこと:線形代数的には精度も重要だということ。中田はコンピュータ上での線形代数演算おける精度問題を解決したい。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 4: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

中田のやりたいこと:コンピュータ上での線形代数演算おける精度問題を解決したい。

人類は、線形代数を有志以来やってきた。エジプトが最古(パピルス)、中国もガウスの消去法は 1000年以上前に知っていた (九章算術)。コンピュータが生まれ、線形代数演算をコンピュータ上で高速に、大量にやらせることが重要になった。これまで主にスピードおよび規模を追求してきた。これがコンピュータの歴史。いままで無視してきたこと:線形代数的には精度も重要だということ。中田はコンピュータ上での線形代数演算おける精度問題を解決したい。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 5: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

中田のやりたいこと:コンピュータ上での線形代数演算おける精度問題を解決したい。

人類は、線形代数を有志以来やってきた。エジプトが最古(パピルス)、中国もガウスの消去法は 1000年以上前に知っていた (九章算術)。コンピュータが生まれ、線形代数演算をコンピュータ上で高速に、大量にやらせることが重要になった。これまで主にスピードおよび規模を追求してきた。これがコンピュータの歴史。いままで無視してきたこと:線形代数的には精度も重要だということ。中田はコンピュータ上での線形代数演算おける精度問題を解決したい。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 6: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

中田のやりたいこと:コンピュータ上での線形代数演算おける精度問題を解決したい。

人類は、線形代数を有志以来やってきた。エジプトが最古(パピルス)、中国もガウスの消去法は 1000年以上前に知っていた (九章算術)。コンピュータが生まれ、線形代数演算をコンピュータ上で高速に、大量にやらせることが重要になった。これまで主にスピードおよび規模を追求してきた。これがコンピュータの歴史。いままで無視してきたこと:線形代数的には精度も重要だということ。中田はコンピュータ上での線形代数演算おける精度問題を解決したい。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 7: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

中田のやりたいこと:コンピュータ上での線形代数演算おける精度問題を解決したい。

人類は、線形代数を有志以来やってきた。エジプトが最古(パピルス)、中国もガウスの消去法は 1000年以上前に知っていた (九章算術)。コンピュータが生まれ、線形代数演算をコンピュータ上で高速に、大量にやらせることが重要になった。これまで主にスピードおよび規模を追求してきた。これがコンピュータの歴史。いままで無視してきたこと:線形代数的には精度も重要だということ。中田はコンピュータ上での線形代数演算おける精度問題を解決したい。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 8: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

中田のやりたいこと:コンピュータ上での線形代数演算おける精度問題を解決したい。

人類は、線形代数を有志以来やってきた。エジプトが最古(パピルス)、中国もガウスの消去法は 1000年以上前に知っていた (九章算術)。コンピュータが生まれ、線形代数演算をコンピュータ上で高速に、大量にやらせることが重要になった。これまで主にスピードおよび規模を追求してきた。これがコンピュータの歴史。いままで無視してきたこと:線形代数的には精度も重要だということ。中田はコンピュータ上での線形代数演算おける精度問題を解決したい。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 9: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

どうやってここにきたか

量子化学の研究をしていた (今もしてます w)

量子化学の問題が半正定値計画法の問題に帰着することを示した [Nakata et al 2001](引用回数 100回以上!)

SDPA, SDPARAをもってしても 7桁くらいしか最適値が出ない。(これは仕方ない)

SDPA-GMPの作成を開始 [Nakata et al 2008](2006年くらいから)

SDPA-GMPで、BLAS, LAPACKのルーチンから 50程度の多倍長精度版の関数を作った。Google検索すると高精度 BLAS, LAPACKをほしがっている人がいた。量子化学で食うのは大変...�� ��(就職活動兼ねて)作ってみようか

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 10: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

どうやってここにきたか

量子化学の研究をしていた (今もしてます w)

量子化学の問題が半正定値計画法の問題に帰着することを示した [Nakata et al 2001](引用回数 100回以上!)

SDPA, SDPARAをもってしても 7桁くらいしか最適値が出ない。(これは仕方ない)

SDPA-GMPの作成を開始 [Nakata et al 2008](2006年くらいから)

SDPA-GMPで、BLAS, LAPACKのルーチンから 50程度の多倍長精度版の関数を作った。Google検索すると高精度 BLAS, LAPACKをほしがっている人がいた。量子化学で食うのは大変...�� ��(就職活動兼ねて)作ってみようか

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 11: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

どうやってここにきたか

量子化学の研究をしていた (今もしてます w)

量子化学の問題が半正定値計画法の問題に帰着することを示した [Nakata et al 2001](引用回数 100回以上!)

SDPA, SDPARAをもってしても 7桁くらいしか最適値が出ない。(これは仕方ない)

SDPA-GMPの作成を開始 [Nakata et al 2008](2006年くらいから)

SDPA-GMPで、BLAS, LAPACKのルーチンから 50程度の多倍長精度版の関数を作った。Google検索すると高精度 BLAS, LAPACKをほしがっている人がいた。量子化学で食うのは大変...�� ��(就職活動兼ねて)作ってみようか

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 12: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

どうやってここにきたか

量子化学の研究をしていた (今もしてます w)

量子化学の問題が半正定値計画法の問題に帰着することを示した [Nakata et al 2001](引用回数 100回以上!)

SDPA, SDPARAをもってしても 7桁くらいしか最適値が出ない。(これは仕方ない)

SDPA-GMPの作成を開始 [Nakata et al 2008](2006年くらいから)

SDPA-GMPで、BLAS, LAPACKのルーチンから 50程度の多倍長精度版の関数を作った。Google検索すると高精度 BLAS, LAPACKをほしがっている人がいた。量子化学で食うのは大変...�� ��(就職活動兼ねて)作ってみようか

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 13: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

どうやってここにきたか

量子化学の研究をしていた (今もしてます w)

量子化学の問題が半正定値計画法の問題に帰着することを示した [Nakata et al 2001](引用回数 100回以上!)

SDPA, SDPARAをもってしても 7桁くらいしか最適値が出ない。(これは仕方ない)

SDPA-GMPの作成を開始 [Nakata et al 2008](2006年くらいから)

SDPA-GMPで、BLAS, LAPACKのルーチンから 50程度の多倍長精度版の関数を作った。Google検索すると高精度 BLAS, LAPACKをほしがっている人がいた。量子化学で食うのは大変...�� ��(就職活動兼ねて)作ってみようか

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 14: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

どうやってここにきたか

量子化学の研究をしていた (今もしてます w)

量子化学の問題が半正定値計画法の問題に帰着することを示した [Nakata et al 2001](引用回数 100回以上!)

SDPA, SDPARAをもってしても 7桁くらいしか最適値が出ない。(これは仕方ない)

SDPA-GMPの作成を開始 [Nakata et al 2008](2006年くらいから)

SDPA-GMPで、BLAS, LAPACKのルーチンから 50程度の多倍長精度版の関数を作った。Google検索すると高精度 BLAS, LAPACKをほしがっている人がいた。量子化学で食うのは大変...�� ��(就職活動兼ねて)作ってみようか

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 15: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

どうやってここにきたか

量子化学の研究をしていた (今もしてます w)

量子化学の問題が半正定値計画法の問題に帰着することを示した [Nakata et al 2001](引用回数 100回以上!)

SDPA, SDPARAをもってしても 7桁くらいしか最適値が出ない。(これは仕方ない)

SDPA-GMPの作成を開始 [Nakata et al 2008](2006年くらいから)

SDPA-GMPで、BLAS, LAPACKのルーチンから 50程度の多倍長精度版の関数を作った。Google検索すると高精度 BLAS, LAPACKをほしがっている人がいた。量子化学で食うのは大変...�� ��(就職活動兼ねて)作ってみようか

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 16: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

どうやってここにきたか

量子化学の研究をしていた (今もしてます w)

量子化学の問題が半正定値計画法の問題に帰着することを示した [Nakata et al 2001](引用回数 100回以上!)

SDPA, SDPARAをもってしても 7桁くらいしか最適値が出ない。(これは仕方ない)

SDPA-GMPの作成を開始 [Nakata et al 2008](2006年くらいから)

SDPA-GMPで、BLAS, LAPACKのルーチンから 50程度の多倍長精度版の関数を作った。Google検索すると高精度 BLAS, LAPACKをほしがっている人がいた。量子化学で食うのは大変...�� ��(就職活動兼ねて)作ってみようか

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 17: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

あらまし

はじめに:どうして我々は精度がほしいのか?

浮動小数点数と多倍長精度ライブラリについて。MPACK, BLAS, LAPACK:線形代数演算ライブラリサマリ

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 18: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

はじめに:どうして我々は精度がほしいのか?

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 19: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

エクサスケールのコンピュータは 1023 回の浮動小数点演算!を一週間で行う。

コンピュータを使った科学は精度が不足することになるだろうと考えられる。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 20: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

エクサスケールのコンピュータは 1023 回の浮動小数点演算!を一週間で行う。

コンピュータを使った科学は精度が不足することになるだろうと考えられる。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 21: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

エクサスケールのコンピュータは 1023 回の浮動小数点演算!を一週間で行う。

コンピュータを使った科学は精度が不足することになるだろうと考えられる。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 22: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

はじめに:どうして我々は精度がほしいのか?

反復法を倍精度で行うと、しばしば収束しないことがある[Hasegawa 2007]。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 23: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

はじめに:どうして我々は精度がほしいのか?

反復法を倍精度で行うと、しばしば収束しないことがある[Hasegawa 2007]。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 24: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

半正定値計画問題 (SDP):解くべき線形方程式の条件数が最適解付近で発散する。最適解に近づくほど、数値的に問題が難しくなる。[Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu]

1e-10

1e-05

1

100000

1e+10

1e+15

1e+20

0 10 20 30 40 50 60 70 80 90

# of iter.

The 1-norm and the estimated 1-norm condition number of shur complement matrix

1-cond1-norm

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 25: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

半正定値計画問題 (SDP):解くべき線形方程式の条件数が最適解付近で発散する。最適解に近づくほど、数値的に問題が難しくなる。[Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu]

1e-10

1e-05

1

100000

1e+10

1e+15

1e+20

0 10 20 30 40 50 60 70 80 90

# of iter.

The 1-norm and the estimated 1-norm condition number of shur complement matrix

1-cond1-norm

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 26: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

半正定値計画問題 (SDP):解くべき線形方程式の条件数が最適解付近で発散する。最適解に近づくほど、数値的に問題が難しくなる。[Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu]

1e-10

1e-05

1

100000

1e+10

1e+15

1e+20

0 10 20 30 40 50 60 70 80 90

# of iter.

The 1-norm and the estimated 1-norm condition number of shur complement matrix

1-cond1-norm

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 27: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

半正定値計画問題 (SDP):解くべき線形方程式の条件数が最適解付近で発散する。最適解に近づくほど、数値的に問題が難しくなる。[Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu]

1e-10

1e-05

1

100000

1e+10

1e+15

1e+20

0 10 20 30 40 50 60 70 80 90

# of iter.

The 1-norm and the estimated 1-norm condition number of shur complement matrix

1-cond1-norm

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 28: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

今後高精度計算はやりやすくなる。演算器 (CPU, GPU,アクセラレータ)などはどんどん高速になるが、メモリバンド幅はあがらないため、演算力は余るのでそれは高精度演算に使える。其れ以前に Intel Xeonなどはとても高速で、演算能力があり過ぎ。10年から 20年前のプログラムは、力技で工夫なくそのまま高精度化しても、十分高速。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 29: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

今後高精度計算はやりやすくなる。演算器 (CPU, GPU,アクセラレータ)などはどんどん高速になるが、メモリバンド幅はあがらないため、演算力は余るのでそれは高精度演算に使える。其れ以前に Intel Xeonなどはとても高速で、演算能力があり過ぎ。10年から 20年前のプログラムは、力技で工夫なくそのまま高精度化しても、十分高速。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 30: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ペタ、エクサスケールの計算機ではより高い精度が必要となる

今後高精度計算はやりやすくなる。演算器 (CPU, GPU,アクセラレータ)などはどんどん高速になるが、メモリバンド幅はあがらないため、演算力は余るのでそれは高精度演算に使える。其れ以前に Intel Xeonなどはとても高速で、演算能力があり過ぎ。10年から 20年前のプログラムは、力技で工夫なくそのまま高精度化しても、十分高速。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 31: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

浮動小数点数と多倍長精度ライブラリについて

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 32: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

倍精度: 最もよく使われている浮動小数点数

“754-2008 IEEE Standard for Floating-Point Arithmetic”

binary64 (倍精度)フォーマットは 10進 16桁の有効桁がある

多くのプラットフォームで使われていて、高速。Core i7 920:∼40GFLOPS; RADEON HD7970 ∼1000GFLOPS,京コンピュータ ∼ 10PFLOPS)�� ��問題点:演算に丸め誤差が入ることがある

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 33: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

丸め誤差対策に、多倍長精度計算を使う

�� ��多倍長精度を使う: あんまり考えず、力づくで処理

浮動小数点数: コンピュータ上での実数の近似表現の一つ

a + (b + c) , (a + b) + c

浮動小数点数、演算の種類によっては計算結果に誤差が入る。倍精度は 10進 16桁の精度しか持たない。

1 + 0.0000000000000001 = 1

解決方法の一つ: 多倍長精度計算

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 34: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

丸め誤差対策に、多倍長精度計算を使う

�� ��多倍長精度を使う: あんまり考えず、力づくで処理

浮動小数点数: コンピュータ上での実数の近似表現の一つ

a + (b + c) , (a + b) + c

浮動小数点数、演算の種類によっては計算結果に誤差が入る。倍精度は 10進 16桁の精度しか持たない。

1 + 0.0000000000000001 = 1

解決方法の一つ: 多倍長精度計算

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 35: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

丸め誤差対策に、多倍長精度計算を使う

�� ��多倍長精度を使う: あんまり考えず、力づくで処理

浮動小数点数: コンピュータ上での実数の近似表現の一つ

a + (b + c) , (a + b) + c

浮動小数点数、演算の種類によっては計算結果に誤差が入る。倍精度は 10進 16桁の精度しか持たない。

1 + 0.0000000000000001 = 1

解決方法の一つ: 多倍長精度計算

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 36: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

丸め誤差対策に、多倍長精度計算を使う

�� ��多倍長精度を使う: あんまり考えず、力づくで処理

浮動小数点数: コンピュータ上での実数の近似表現の一つ

a + (b + c) , (a + b) + c

浮動小数点数、演算の種類によっては計算結果に誤差が入る。倍精度は 10進 16桁の精度しか持たない。

1 + 0.0000000000000001 = 1

解決方法の一つ: 多倍長精度計算

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 37: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

丸め誤差対策に、多倍長精度計算を使う

�� ��多倍長精度を使う: あんまり考えず、力づくで処理

浮動小数点数: コンピュータ上での実数の近似表現の一つ

a + (b + c) , (a + b) + c

浮動小数点数、演算の種類によっては計算結果に誤差が入る。倍精度は 10進 16桁の精度しか持たない。

1 + 0.0000000000000001 = 1

解決方法の一つ: 多倍長精度計算

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 38: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

多倍長精度、多倍長精度計算とは?

�� ��多倍長精度とは、浮動小数点数で仮数部を大きく取る精度

GMPというライブラリが有名。http://gmplib.org/

仮数部は任意に大きくとれる。

演算はソフトウェア的に実装してある。これは最も高速なライブラリだが、それでも演算はかなり遅い。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 39: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

多倍長精度、多倍長精度計算とは?

�� ��多倍長精度とは、浮動小数点数で仮数部を大きく取る精度

GMPというライブラリが有名。http://gmplib.org/

仮数部は任意に大きくとれる。

演算はソフトウェア的に実装してある。これは最も高速なライブラリだが、それでも演算はかなり遅い。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 40: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

他の多倍長精度演算ライブラリについて

他の多倍長精度演算ライブラリについて:QDライブラリ: double-double (quad-double)精度 : 10進 32(64)桁、非常に高速

binary128, IEEE 754 2008の四倍精度。

IEEE754スタイルの多倍長精度演算ライブラリ: MPFR (実数)および MPC (複素数)。�� ��一番厳密なのはMPFR+MPCの組み合わせ。これを正本として作成している

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 41: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

他の多倍長精度演算ライブラリについて

他の多倍長精度演算ライブラリについて:QDライブラリ: double-double (quad-double)精度 : 10進 32(64)桁、非常に高速

binary128, IEEE 754 2008の四倍精度。

IEEE754スタイルの多倍長精度演算ライブラリ: MPFR (実数)および MPC (複素数)。�� ��一番厳密なのはMPFR+MPCの組み合わせ。これを正本として作成している

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 42: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

他の多倍長精度演算ライブラリについて

他の多倍長精度演算ライブラリについて:QDライブラリ: double-double (quad-double)精度 : 10進 32(64)桁、非常に高速

binary128, IEEE 754 2008の四倍精度。

IEEE754スタイルの多倍長精度演算ライブラリ: MPFR (実数)および MPC (複素数)。�� ��一番厳密なのはMPFR+MPCの組み合わせ。これを正本として作成している

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 43: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

多倍長精度演算ライブラリのまとめ

精度 丸め スピード  複素数 コメント GMP 任意 なし △ とりあえず よく使われるMPFR 任意 厳密 遅い 厳密 最も厳密

DD 32桁 ? 高速 とりあえず 倍精度演算で実現

QD 64桁 ? GMPの 2倍? とりあえず 指数部削られ過ぎdouble 16桁 ハード 超高速 コンパイラ依存 最も高速

binary128 32桁 ? 遅い コンパイラ依存 gcc/iccでサポート有

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 44: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

BLAS, LAPACK, MPACKの紹介

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 45: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

BLAS、LAPACKとは?

BLAS:さまざまなタイプのベクトル-ベクトル、行列-ベクトル、行列-行列演算の参照実装。高速な実装も入手できる。たとえば OpenBLAS(GotoBLAS2), Intel MKL, ATLASなど。LAPACK:連立一次方程式、固有値問題、最小二乗法をとく。デファクトスタンダードなライブラリ。多くのソフトウェアがこれを参照している。LAPACKの webページのヒット数: 110,343,542 (Mon Dec10 16:20:25 EST 2012)�� ��BLASと LAPACKは大変重要なライブラリ

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 46: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

BLAS、LAPACKとは?

BLAS:さまざまなタイプのベクトル-ベクトル、行列-ベクトル、行列-行列演算の参照実装。高速な実装も入手できる。たとえば OpenBLAS(GotoBLAS2), Intel MKL, ATLASなど。LAPACK:連立一次方程式、固有値問題、最小二乗法をとく。デファクトスタンダードなライブラリ。多くのソフトウェアがこれを参照している。LAPACKの webページのヒット数: 110,343,542 (Mon Dec10 16:20:25 EST 2012)�� ��BLASと LAPACKは大変重要なライブラリ

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 47: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

高精度線形代数演算ライブラリMPACK�� ��http://mplapack.sourceforge.net/中田真秀@理化学研究所

MPACK:高精度線形代数演算ライブラリ:BLAS,LAPACKをベース線形代数演算のビルディングブロック、参照実装、プログラムインターフェース (API)提供Version 0.8.0 (2012/12/25);ステータス: MBLAS完成, MLAPACK100ルーチン完成NVIDIA GPU C2050での DD精度の行列積の加速綿密なテスト: BLAS、LAPACKにあらゆる値を代入して行われるLinux/FreeBSD/Mac/Win/Intel Xeon Phi/NVIDIA C2050をサポート5つの高精度計算の型をサポート: GMP, MPFR,本物の 4倍精度(binary128), DD, QD,倍精度C++で書きなおした: プログラミングを容易にする。オープンソース: 2-条項 BSDライセンス、再配布、変更など ok!

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 48: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MPACK 0.8.0: できることとできないこと

Version 0.8.0 (2012/12/25);ステータス: MBLAS完成, MLAPACK100ルーチン完成Rgemm (行列-行列積) : OpenMPで加速Rgemmの倍々精度は NVIDIA C2050での GPU加速MLAPACK :対称、エルミート行列の固有値問題、LU分解、コレスキー分解、条件数推定、逆行列MLAPACK:一般固有値問題、特異値分解、最小に情報、QR分解など...

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 49: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MPACKの用途

数値的に不安定な問題を解く場合:反復法、半正定値法の最適解付近。計算機援用証明を行いたい場合。精度保証を行いたい場合: INTLABとコラボレーションできないか?

既存の C++のコードを労力少なく多倍長化したいとき。4倍精度程度の計算を高速に行いたい場合。精度を実行時に様々に変化させたい場合。数値的に不安なときのデバッグに使う。(カジュアルに、例えば)ある値が 0であることを確認したい場合。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 50: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

関数の名前の付け方:プログラムインターフェース (API)提供

Prefixの変化float, double→ “R”eal,complex, double complex→ “C”omplex.

daxpy, zaxpy→ Raxpy, Caxpy

dgemm, zgemm→ Rgemm, Cgemm

dsterf, dsyev→ Rsterf, Rsyev

dzabs1, dzasum→ RCabs1, RCasum

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 51: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MBLAS 0.8.0でサポートされている全 76ルーチン

LEVEL1 MBLASCrotg Cscal Rrotg Rrot Rrotm CRrot Cswap

Rswap CRscal Rscal Ccopy Rcopy Caxpy RaxpyRdot Cdotc Cdotu RCnrm2 Rnrm2 Rasum iCasum

iRamax RCabs1 Mlsame Mxerbla

LEVEL2 MBLASCgemv Rgemv Cgbmv Rgbmv Chemv Chbmv Chpmv RsymvRsbmv Ctrmv Cgemv Rgemv Cgbmv Rgemv Chemv ChbmvChpmv Rsymv Rsbmv Rspmv Ctrmv Rtrmv Ctbmv CtpmvRtpmv Ctrsv Rtrsv Ctbsv Rtbsv Ctpsv Rger CgeruCgerc Cher Chpr Cher2 Chpr2 Rsyr Rspr Rsyr2Rspr2

LEVEL3 MBLASCgemm Rgemm Csymm Rsymm Chemm Csyrk Rsyrk CherkCsyr2k Rsyr2k Cher2k Ctrmm Rtrmm Ctrsm Rtrsm

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 52: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MLAPACK 0.8.0でサポートされている全 100ルーチン

Mutils Rlamch Rlae2 Rlaev2 Claev2 Rlassq ClassqRlanst Clanht Rlansy Clansy Clanhe Rlapy2 RlarfgRlapy3 Rladiv Cladiv Clarfg Rlartg Clartg RlasetClaset Rlasr Clasr Rpotf2 Clacgv Cpotf2 RlasclClascl Rlasrt Rsytd2 Chetd2 Rsteqr Csteqr RsterfRlarf Clarf Rorg2l Cung2l Rorg2r Cung2r RlarftClarft Rlarfb Clarfb Rorgqr Cungqr Rorgql CungqlRlatrd Clatrd Rsytrd Chetrd Rorgtr Cungtr RsyevCheev Rpotrf Cpotrf Clacrm Rtrti2 Ctrti2 RtrtriCtrtri Rgetf2 Cgetf2 Rlaswp Claswp Rgetrf CgetrfRgetri Cgetri Rgetrs Cgetrs Rgesv Cgesv RtrtrsCtrtrs Rlasyf Clasyf Clahef Clacrt Claesy Crot

Cspmv Cspr Csymv Csyr iCmax1 RCsum1 RpotrsRposv Rgeequ Rlatrs Rlange Rgecon Rlauu2 RlauumRpotri Rpocon

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 53: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

BLAS, LAPACKとの相違点:プログラムインターフェース (API)提供

呼び出し方が若干違う。call by valueが、時々call by referenceになっている。MBLAS/MLAPACK:

Rgemm("n", "n", n, n, n, alpha, A, n, B, n, beta, C, n);

Rgetrf(n, n, A, n, ipiv, &info);

Rgetri(n, A, n, ipiv, work, lwork, &info);

Rsyev("V", "U", n, A, n, w, work, &lwork, &info);

BLAS/LAPACK:

dgemm_f77("N", "N", &n, &n, &n, &One, A, &n, A, &n, &Zero, C, &n);

dgetri_f77(&n, A, &n, ipiv, work, &lwork, &info);

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 54: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

プログラミング詳細

型は INTEGER, REAL, COMPLEX, LOGICALを使っている。これのみでプログラム作成した。多倍長精度演算ライブラリは “typedef”を使った REAL→mpf class, qd real, dd real etc.

初等関数 (log, sin etc)はあれば使う、無ければ倍精度のものを使った。多倍長精度演算ライブラリは GMP, MPFR, QD, DD,binary128, doubleをサポートいくつか多倍長精度演算ライブラリの違いを吸収するような関数を書いた。ほとんど C++の “double”と同じ感覚でプログラムできる。(例. SDPA-DD,および -GMP)

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 55: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MBLASの実装例

Caxpy: Complex version of axpy

void Caxpy(INTEGER n, COMPLEX ca, COMPLEX * cx, INTEGER incx, COMPLEX * cy, INTEGER incy)

{

REAL Zero = 0.0;

if (n <= 0)

return;

if (RCabs1(ca) == Zero)

return;

INTEGER ix = 0;

INTEGER iy = 0;

if (incx < 0)

ix = (-n + 1) * incx;

if (incy < 0)

iy = (-n + 1) * incy;

for (INTEGER i = 0; i < n; i++) {

cy[iy] = cy[iy] + ca * cx[ix];

ix = ix + incx;

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 56: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MLAPACK実装例Rsyev; diagonalization of real symmetric matrices

Rlascl(uplo, 0, 0, One, sigma, n, n, A, lda, info);

}

//Call DSYTRD to reduce symmetric matrix to tridiagonal form.

inde = 1;

indtau = inde + n;

indwrk = indtau + n;

llwork = *lwork - indwrk + 1;

Rsytrd(uplo, n, &A[0], lda, &w[0], &work[inde - 1], &work[indtau - 1],

&work[indwrk - 1], llwork, &iinfo);

//For eigenvalues only, call DSTERF. For eigenvectors, first call

//DORGTR to generate the orthogonal matrix, then call DSTEQR.

if (!wantz) {

Rsterf(n, &w[0], &work[inde - 1], info);

} else {

Rorgtr(uplo, n, A, lda, &work[indtau - 1], &work[indwrk - 1], llwork,

&iinfo);

Rsteqr(jobz, n, w, &work[inde - 1], A, lda, &work[indtau - 1], info);

}

//If matrix was scaled, then rescale eigenvalues appropriately.

if (iscale == 1) {

if (*info == 0) {

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 57: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MPACK (MBLAS/MLAPACK)についての事実

Googleに”Multiple precision BLAS”でお尋ねすると私のページおよび関連ページばかりがヒットダウンロードは 2013/1/26現在 3043ダウンロード。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 58: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MBLASの品質保証�� ��BLASは代数的な処理のみ行う

想定される様々なケースについて数を代入してみてMPFR+MPC版と BLASの結果と良い一致を得ること。同じことをMPFR+MPC版と DD版、倍精度版、GMP版...と比較して良い一致を得ること。バグが取れる。BLASはこれで ok。for (int k = MIN_K; k < MAX_K; k++) {

for (int n = MIN_N; n < MAX_N; n++) {

for (int m = MIN_M; m < MAX_M; m++) {

...

for (int lda = minlda; lda < MAX_LDA; lda++) {

for (int ldb = minldb; ldb < MAX_LDB; ldb++) {

for (int ldc = max(1, m); ldc < MAX_LDC; ldc++) {

Rgemm(transa, transb, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);

dgemm_f77(transa, transb, &m, &n, &k, &alphad, Ad, &lda,

Bd, &ldb, &betad, Cd, &ldc);

...

diff = vec_diff(C, Cd, MAT_A(ldc, n), 1);

if (fabs(diff) > EPSILON) {

printf(‘‘#error %lf!!\n’’, diff);

errorflag = TRUE;

}

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 59: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

MLAPACKの品質保証

  �� ��収束の概念が入るため、とても難しい

同じように様々な値を代入して、MPFR+MPC版と LAPACKと一致を得る。収束の概念が入ってくるルーチンもある。

代数的操作しかないルーチンもあるし、反復するものでもだいたい ok

研究に用いると無限ループなどに陥る場合がある。これでもバグがわかる。(Waki et al.)

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 60: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

GMP, MPFRでは実行時に精度を変更できる

MPACKのパッケージに入っている 50x50のヒルベルト行列とその逆行列を数値的に求めて、単位行列との差を求めるプログラムについて精度を実行時に変更できる。

$ ./hilbert_mpfr

...

1norm(I-A*invA)=1.8784847910273908e-73

$ MPACK_MPFR_PRECISION=1024;

$ export MPACK_MPFR_PRECISION ; ./hilbert_mpfr

...

1norm(I-A*invA)=1.9318639065194500e-226

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 61: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

ベクトル演算:Raxpyのパフォーマンス測定

on Intel Core i7 920 (2.6GHz) / Ubuntu 10.04 / gcc 4.4.3

y ← αx + y

Raxpy performance in Flops. multithread by OpenMP inparenthesis

MP Library(sign. digs.) Flops (OpenMP)DD(32) 130(570)MQD(64) 13.7(67)M

GMP(77) 11.3(45)MGMP(154) 7.6(32)MMPFR(154) 3.7(17)M

GotoBLAS(16) 1.5G

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 62: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-ベクトル積:Rgemvのパフォーマンス

on Intel Core i7 920 (2.6GHz) / Ubuntu 10.04 / gcc 4.4.3

y ← αAx + βy

Rgemv performance in Flops.MP Library(sign. digs.) Flops (OpenMP)

DD(32) 140MQD(64) 13M

GMP(77) 11.1MMPFR(77) 4.7MGMP(154) 7.1MMPFR(154) 3.7M

GotoBLAS(16) 3.8G

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 63: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス

on Intel Core i7 920 (2.6GHz) / Ubuntu 10.04 / gcc 4.4.3

Rgemm performance in Flops.

C ← αAB + βC

MP Library(sign. digs.) Flops (OpenMP)DD(32) 136 (605)MQD(64) 13.9 (63)M

GMP(77) 11.5 (44)MMPFR(77) 4.6 (20)MGMP(154) 7.2 (28) MMPFR(154) 3.7 (16) M

GotoBLAS(16) 42.5G

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 64: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス: 倍々精度 (擬似的な 4倍精度) Westmere EP

Intel Composer, Intel WestmereEP, 40 cores, 2.4GHz: apporx5GFlops

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 65: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス: GMP (154桁) WestmereEP

Intel Composer, Intel WestmereEP, 40 cores, 2.4GHz, approx.0.2GFlops

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 66: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス: 倍々精度 (擬似的な四倍精度) Magnycours 48cores

GCC 4.6, Magny cours 2.4GHz, 48 cores : approx 3GFlops

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 67: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス: binary128 (本物の四倍精度) Magnycours 48cores

GCC 4.6, Magny cours 2.4GHz, 48 cores : approx 0.3GFlops

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 68: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス: GMP (154桁)Magnycours 48cores

GCC 4.6, Magny cours 2.4GHz, 48 cores: approx 0.15GFlops

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 69: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス: binary128 (本物の四倍精度) [email protected]

Intel Composer 2013, Xeon [email protected]

0

100

200

300

400

500

600

700

0 100 200 300 400 500 600 700 800 900 1000

FLO

PS

Dimension

Rgemm (__float128) performance

NNNTTNTT

NN 24NN gccNT gccTN gccTT gcc

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 70: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス double-double精度 onNVIDIA C2050

CUDA 3.2, NVIDIA C2050, 16GFlops-26GFlops高速かつ安定したパフォーマンス

0

5

10

15

20

25

0 1000 2000 3000 4000 5000 6000

GFL

OPS

Dimension

QuadMul−Sloppy, QuadAdd−Cray KernelQuadMul−Sloppy, QuadAdd−Cray TotalQuadMul−FMA, QuadAdd−Cray Kernel

QuadMul−FMA, QuadAdd−Cray TotalQuadMul−Sloppy, QuadAdd−IEEE Kernel

QuadMul−Sloppy, QuadAdd−IEEE TotalQuadMul−FMA, QuadAdd−IEEE Kernel

QuadMul−FMA, QuadAdd−IEEE Total

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 71: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス double-double精度 onNVIDIA C2050

CUDAさまざまなバージョンを用いた比較

24000

24500

25000

25500

26000

26500

27000

1540 1550 1560 1570 1580 1590 1600 1610 1620

FLO

PS

Dimension

Rgemm (double-doule) performance on NVIDIA C2050

CUDA 3.1CUDA 3.2CUDA 4.0CUDA 4.2CUDA 5.0

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 72: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

行列-行列積:Rgemmのパフォーマンス double-double精度 onNVIDIA C2050

CUDAさまざまなバージョンを用いた比較。

14600

14800

15000

15200

15400

15600

15800

16000

16200

16400

16600

1534 1535 1536 1537 1538 1539 1540

FLO

PS

Dimension

Rgemm (double-doule) QuadADD-IEEE, QuadMul-FMA performance on NVIDIA C2050

CUDA 3.1CUDA 3.2CUDA 4.0CUDA 4.2CUDA 5.0

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 73: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

コレスキー分解:Rportfパフォーマンス double-double精度 onNVIDIA C2050

コレスキー分解分解を行った。Rgemmの加速によりコレスキー分解も加速される。

0

100

200

300

400

500

600

700

800

900

1000

0 100 200 300 400 500 600 700 800 900 1000

FLO

PS

Dimension

Rpotrf performance by NVIDIA C2050 (Note: gpu'ed Rgemm only)

host upperCUDA upper (Gemm only)

host lowerCUDA lower (Gemm only)

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 74: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

対称固有値問題: Rsyevのパフォーマンス

on Intel Core i7 920 (2.6GHz) / Ubuntu 10.04 / gcc 4.4.3

Rsyevのパフォーマンス (300x300の対称行列、固有値、固有ベクトルを求める、秒)

AX = diag[λ1, λ2, · · · λN]X

MP Library(sign. digs.) secondsDD(32) 2.4QD(64) 25.6

GMP(77) 36.9MPFR(77) 78.9GMP(154) 64.0MPFR(154) 111

GotoBLAS(16) 0.1

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 75: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

高精度線形代数演算ライブラリMPACK�� ��http://mplapack.sourceforge.net/中田真秀@理化学研究所

MPACK:高精度線形代数演算ライブラリ:BLAS,LAPACKをベース線形代数演算のビルディングブロック、参照実装、プログラムインターフェース (API)提供Version 0.8.0 (2012/12/25);ステータス: MBLAS完成, MLAPACK100ルーチン完成NVIDIA GPU C2050での DD精度の行列積の加速綿密なテスト: BLAS、LAPACKにあらゆる値を代入して行われるLinux/FreeBSD/Mac/Win/Intel Xeon Phi/NVIDIA C2050をサポート5つの高精度計算の型をサポート: GMP, MPFR,本物の 4倍精度(binary128), DD, QD,倍精度C++で書きなおした: プログラミングを容易にする。オープンソース: 2-条項 BSDライセンス、再配布、変更など ok!

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介

Page 76: 高精度線形代数演算ライブラリMPACK 0.8.0の紹介

今後やりたいこと/やりたくないこと

精度保証の研究成果の取り込み。LAPACKの実装されてない関数の実装。疎行列、高速フーリエ変換 (FFT)の APIの策定。QPBLAS GPUの取り込み。区間演算はやらない。

中田真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介