SlideShare una empresa de Scribd logo
1 de 76
Descargar para leer sin conexión
.
    高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
.


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


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




                 中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
高精度線形代数演算ライブラリ MPACK
          §                                ¤
          http://mplapack.sourceforge.net/
          ¦                                ¥
              中田 真秀@理化学研究所

MPACK: 高精度線形代数演算ライブラリ:BLAS,LAPACK をベース
線形代数演算のビルディングブロック、参照実装、プログラムイン
ターフェース (API) 提供
Version 0.8.0 (2012/12/25); ステータス: MBLAS 完成, MLAPACK
100 ルーチン完成
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 の紹介
中田のやりたいこと:コンピュータ上での線形代数演算おける精度
           問題を解決したい。


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



              中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
中田のやりたいこと:コンピュータ上での線形代数演算おける精度
           問題を解決したい。


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



              中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
中田のやりたいこと:コンピュータ上での線形代数演算おける精度
           問題を解決したい。


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



              中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
中田のやりたいこと:コンピュータ上での線形代数演算おける精度
           問題を解決したい。


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



              中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
中田のやりたいこと:コンピュータ上での線形代数演算おける精度
           問題を解決したい。


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



              中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
中田のやりたいこと:コンピュータ上での線形代数演算おける精度
           問題を解決したい。


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



              中田 真秀   高精度線形代数演算ライブラリ 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 の紹介
どうやってここにきたか

量子化学の研究をしていた (今もしてます 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 の紹介
どうやってここにきたか

量子化学の研究をしていた (今もしてます 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 の紹介
どうやってここにきたか

量子化学の研究をしていた (今もしてます 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 の紹介
どうやってここにきたか

量子化学の研究をしていた (今もしてます 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 の紹介
どうやってここにきたか

量子化学の研究をしていた (今もしてます 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 の紹介
どうやってここにきたか

量子化学の研究をしていた (今もしてます 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 の紹介
どうやってここにきたか

量子化学の研究をしていた (今もしてます 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 の紹介
あらまし




はじめに:どうして我々は精度がほしいのか?
浮動小数点数と多倍長精度ライブラリについて。
MPACK, BLAS, LAPACK: 線形代数演算ライブラリ
サマリ




             中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
はじめに:どうして我々は精度がほしいのか?




       中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる



  エクサスケールのコンピュータは 1023 回の浮動小数点演算!
  を一週間で行う。
    コンピュータを使った科学は精度が不足することになるだろ
    うと考えられる。




            中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる



  エクサスケールのコンピュータは 1023 回の浮動小数点演算!
  を一週間で行う。
    コンピュータを使った科学は精度が不足することになるだろ
    うと考えられる。




            中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる



  エクサスケールのコンピュータは 1023 回の浮動小数点演算!
  を一週間で行う。
    コンピュータを使った科学は精度が不足することになるだろ
    うと考えられる。




            中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
はじめに:どうして我々は精度がほしいのか?

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




         中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
はじめに:どうして我々は精度がほしいのか?

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




         中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる

  半正定値計画問題 (SDP): 解くべき線形方程式の条件数が最
  適解付近で発散する。
  最適解に近づくほど、数値的に問題が難しくなる。
  [Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu]
                      The 1-norm and the estimated 1-norm condition number of shur complement matrix
          1e+20
                                                                                          1-cond
                                                                                          1-norm


          1e+15



          1e+10



         100000



              1



          1e-05



          1e-10
                  0     10        20        30         40           50     60        70        80      90
                                                         # of iter.




                                       中田 真秀                高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる

  半正定値計画問題 (SDP): 解くべき線形方程式の条件数が最
  適解付近で発散する。
  最適解に近づくほど、数値的に問題が難しくなる。
  [Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu]
                      The 1-norm and the estimated 1-norm condition number of shur complement matrix
          1e+20
                                                                                          1-cond
                                                                                          1-norm


          1e+15



          1e+10



         100000



              1



          1e-05



          1e-10
                  0     10        20        30         40           50     60        70        80      90
                                                         # of iter.




                                       中田 真秀                高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる

  半正定値計画問題 (SDP): 解くべき線形方程式の条件数が最
  適解付近で発散する。
  最適解に近づくほど、数値的に問題が難しくなる。
  [Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu]
                      The 1-norm and the estimated 1-norm condition number of shur complement matrix
          1e+20
                                                                                          1-cond
                                                                                          1-norm


          1e+15



          1e+10



         100000



              1



          1e-05



          1e-10
                  0     10        20        30         40           50     60        70        80      90
                                                         # of iter.




                                       中田 真秀                高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる

  半正定値計画問題 (SDP): 解くべき線形方程式の条件数が最
  適解付近で発散する。
  最適解に近づくほど、数値的に問題が難しくなる。
  [Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu]
                      The 1-norm and the estimated 1-norm condition number of shur complement matrix
          1e+20
                                                                                          1-cond
                                                                                          1-norm


          1e+15



          1e+10



         100000



              1



          1e-05



          1e-10
                  0     10        20        30         40           50     60        70        80      90
                                                         # of iter.




                                       中田 真秀                高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる




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




             中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる




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




             中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
ペタ、エクサスケールの計算機ではより高い精度が必要となる




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




             中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
浮動小数点数と多倍長精度ライブラリについて




       中田 真秀   高精度線形代数演算ライブラリ 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 の紹介
丸め誤差対策に、多倍長精度計算を使う

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

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

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


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

         1 + 0.0000000000000001 = 1


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

             中田 真秀      高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
丸め誤差対策に、多倍長精度計算を使う

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

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

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


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

         1 + 0.0000000000000001 = 1


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

             中田 真秀      高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
丸め誤差対策に、多倍長精度計算を使う

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

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

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


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

         1 + 0.0000000000000001 = 1


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

             中田 真秀      高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
丸め誤差対策に、多倍長精度計算を使う

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

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

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


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

         1 + 0.0000000000000001 = 1


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

             中田 真秀      高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
丸め誤差対策に、多倍長精度計算を使う

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

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

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


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

         1 + 0.0000000000000001 = 1


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

             中田 真秀      高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
多倍長精度、多倍長精度計算とは?



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

    GMP というライブラリが有名。http://gmplib.org/
    仮数部は任意に大きくとれる。




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




                  中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
多倍長精度、多倍長精度計算とは?



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

    GMP というライブラリが有名。http://gmplib.org/
    仮数部は任意に大きくとれる。




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




                  中田 真秀   高精度線形代数演算ライブラリ 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 の紹介
他の多倍長精度演算ライブラリについて
他の多倍長精度演算ライブラリについて:
  QD ライブラリ: double-double (quad-double) 精度 : 10 進 32
  (64) 桁、非常に高速




    binary128, IEEE 754 2008 の四倍精度。



    IEEE754 スタイルの多倍長精度演算ライブラリ: MPFR (実
    数) および MPC (複素数)。
§
一番厳密なのは MPFR+MPC の組み合わせ。これを正本として作成して
¦
                    中田 真秀   高精度線形代数演算ライブラリ 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 の紹介
多倍長精度演算ライブラリのまとめ




            精度     丸め     スピード          複素数             コメント 
 GMP        任意     なし        △         とりあえず           よく使われる
 MPFR       任意     厳密       遅い           厳密              最も厳密
  DD        32 桁    ?       高速         とりあえず          倍精度演算で実現

   QD       64 桁    ?    GMP の 2 倍?    とりあえず          指数部削られ過ぎ
  double    16 桁   ハード     超高速        コンパイラ依存              最も高速
binary128   32 桁    ?       遅い        コンパイラ依存        gcc/icc でサポート有




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




      中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
BLAS、LAPACK とは?



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




               中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
BLAS、LAPACK とは?



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




               中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
高精度線形代数演算ライブラリ MPACK
          §                                ¤
          http://mplapack.sourceforge.net/
          ¦                                ¥
              中田 真秀@理化学研究所

MPACK: 高精度線形代数演算ライブラリ:BLAS,LAPACK をベース
線形代数演算のビルディングブロック、参照実装、プログラムイン
ターフェース (API) 提供
Version 0.8.0 (2012/12/25); ステータス: MBLAS 完成, MLAPACK
100 ルーチン完成
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 の紹介
MPACK 0.8.0: できることとできないこと




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




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



数値的に不安定な問題を解く場合:反復法、半正定値法の最適解
付近。
計算機援用証明を行いたい場合。
精度保証を行いたい場合: INTLAB とコラボレーションできないか?
既存の C++のコードを労力少なく多倍長化したいとき。
4 倍精度程度の計算を高速に行いたい場合。
精度を実行時に様々に変化させたい場合。
数値的に不安なときのデバッグに使う。
(カジュアルに、例えば) ある値が 0 であることを確認したい場合。




            中田 真秀   高精度線形代数演算ライブラリ 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 の紹介
MBLAS 0.8.0 でサポートされている全 76 ルーチン


                            LEVEL1 MBLAS
  Crotg      Cscal      Rrotg     Rrot   Rrotm     CRrot      Cswap
  Rswap     CRscal      Rscal    Ccopy   Rcopy     Caxpy      Raxpy
   Rdot      Cdotc     Cdotu    RCnrm2 Rnrm2       Rasum     iCasum
 iRamax     RCabs1     Mlsame   Mxerbla

                              LEVEL2 MBLAS
Cgemv     Rgemv    Cgbmv      Rgbmv Chemv     Chbmv      Chpmv    Rsymv
Rsbmv     Ctrmv    Cgemv      Rgemv Cgbmv     Rgemv      Chemv    Chbmv
Chpmv     Rsymv    Rsbmv      Rspmv   Ctrmv   Rtrmv      Ctbmv    Ctpmv
Rtpmv      Ctrsv    Rtrsv      Ctbsv  Rtbsv   Ctpsv       Rger    Cgeru
Cgerc      Cher     Chpr       Cher2  Chpr2    Rsyr       Rspr    Rsyr2
Rspr2

                              LEVEL3 MBLAS
Cgemm     Rgemm      Csymm      Rsymm Chemm      Csyrk    Rsyrk   Cherk
Csyr2k    Rsyr2k     Cher2k     Ctrmm   Rtrmm    Ctrsm    Rtrsm



                              中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
MLAPACK 0.8.0 でサポートされている全 100 ルーチン



Mutils    Rlamch    Rlae2    Rlaev2    Claev2    Rlassq   Classq
Rlanst    Clanht    Rlansy   Clansy   Clanhe     Rlapy2    Rlarfg
Rlapy3     Rladiv   Cladiv   Clarfg    Rlartg    Clartg   Rlaset
Claset     Rlasr     Clasr   Rpotf2    Clacgv    Cpotf2    Rlascl
Clascl     Rlasrt   Rsytd2   Chetd2    Rsteqr    Csteqr    Rsterf
 Rlarf     Clarf    Rorg2l   Cung2l    Rorg2r   Cung2r     Rlarft
Clarft     Rlarfb   Clarfb   Rorgqr   Cungqr     Rorgql   Cungql
Rlatrd     Clatrd   Rsytrd   Chetrd    Rorgtr    Cungtr   Rsyev
Cheev      Rpotrf   Cpotrf   Clacrm    Rtrti2    Ctrti2    Rtrtri
 Ctrtri   Rgetf2    Cgetf2   Rlaswp   Claswp     Rgetrf   Cgetrf
Rgetri     Cgetri   Rgetrs   Cgetrs    Rgesv     Cgesv     Rtrtrs
Ctrtrs     Rlasyf   Clasyf   Clahef    Clacrt    Claesy     Crot
Cspmv      Cspr     Csymv     Csyr    iCmax1    RCsum1    Rpotrs
Rposv     Rgeequ    Rlatrs   Rlange   Rgecon    Rlauu2    Rlauum
Rpotri    Rpocon




                         中田 真秀    高精度線形代数演算ライブラリ 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 の紹介
プログラミング詳細


型は 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 の紹介
MBLAS の実装例


Caxpy: Complex version of axpy
void Caxpy(INTEGER n, COMPLEX ca, COMPLEX * cx, INTEGER incx, COMPLEX * cy, INTE
{
    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 の紹介
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 の紹介
MPACK (MBLAS/MLAPACK) についての事実


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




               中田 真秀   高精度線形代数演算ライブラリ 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);
                         中田 真秀     高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
MLAPACK の品質保証



 
        §                                ¤
        収束の概念が入るため、とても難しい ¥
        ¦

    同じように様々な値を代入して、MPFR+MPC 版と LAPACK
    と一致を得る。
    収束の概念が入ってくるルーチンもある。
      代数的操作しかないルーチンもあるし、反復するものでもだ
      いたい ok
    研究に用いると無限ループなどに陥る場合がある。これでも
    バグがわかる。(Waki et al.)




               中田 真秀   高精度線形代数演算ライブラリ 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 の紹介
ベクトル演算: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 in
                         parenthesis
           MP Library(sign. digs.) Flops (OpenMP)
                  DD(32)               130(570)M
                  QD(64)               13.7(67)M
                 GMP(77)               11.3(45)M
                 GMP(154)               7.6(32)M
                MPFR(154)               3.7(17)M
               GotoBLAS(16)               1.5G




                          中田 真秀    高精度線形代数演算ライブラリ 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)                140M
                   QD(64)                 13M
                  GMP(77)                11.1M
                 MPFR(77)                4.7M
                 GMP(154)                7.1M
                 MPFR(154)               3.7M
               GotoBLAS(16)               3.8G




                          中田 真秀    高精度線形代数演算ライブラリ 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)M
                   QD(64)                  13.9 (63)M
                  GMP(77)                  11.5 (44)M
                 MPFR(77)                  4.6 (20)M
                 GMP(154)                  7.2 (28) M
                 MPFR(154)                 3.7 (16) M
               GotoBLAS(16)                  42.5G



                          中田 真秀       高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
行列-行列積:Rgemm のパフォーマンス: 倍々精度 (擬似的な 4 倍精
              度) Westmere EP
 Intel Composer, Intel WestmereEP, 40 cores, 2.4GHz: apporx
 5GFlops




                         中田 真秀    高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
行列-行列積:Rgemm のパフォーマンス: GMP (154 桁) Westmere
                 EP

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




                          中田 真秀   高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
行列-行列積:Rgemm のパフォーマンス: 倍々精度 (擬似的な四倍精
            度) Magnycours 48cores
 GCC 4.6, Magny cours 2.4GHz, 48 cores : approx 3GFlops




                        中田 真秀    高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
行列-行列積:Rgemm のパフォーマンス: binary128 (本物の四倍精
            度) Magnycours 48cores
 GCC 4.6, Magny cours 2.4GHz, 48 cores : approx 0.3GFlops




                        中田 真秀    高精度線形代数演算ライブラリ 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 の紹介
行列-行列積:Rgemm のパフォーマンス: binary128 (本物の四倍精
              度) X5680@3.33GHz


 Intel Composer 2013, Xeon X5680@3.33GHz

                                     Rgemm (__float128) performance
               	700

               	600

               	500

               	400
       FLOPS




               	300                                                               NN
                                                                                   NT
                                                                                   TN
               	200                                                                TT
                                                                                NN 24
                                                                               NN gcc
               	100                                                            NT gcc
                                                                               TN gcc
                                                                               TT gcc
                	0
                  	0   	100   	200   	300   	400     	500      	600   	700   	800   	900   	1000
                                                   Dimension




                                       中田 真秀           高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
行列-行列積:Rgemm のパフォーマンス double-double 精度 on
              NVIDIA C2050

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



             25


             20
    GFLOPS




             15


             10              QuadMul−Sloppy, QuadAdd−Cray Kernel
                              QuadMul−Sloppy, QuadAdd−Cray Total
                               QuadMul−FMA, QuadAdd−Cray Kernel
                                QuadMul−FMA, QuadAdd−Cray Total
             5               QuadMul−Sloppy, QuadAdd−IEEE Kernel
                              QuadMul−Sloppy, QuadAdd−IEEE Total
                              QuadMul−FMA, QuadAdd−IEEE Kernel
                                QuadMul−FMA, QuadAdd−IEEE Total
             0
                  0   1000       2000      3000     4000     5000   6000
                                中田 真秀      高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
                                        Dimension
行列-行列積:Rgemm のパフォーマンス double-double 精度 on
              NVIDIA C2050

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

                            Rgemm (double-doule) performance on NVIDIA C2050
           	27000


           	26500


           	26000
   FLOPS




           	25500


           	25000

                                                                       CUDA    3.1
           	24500                                                      CUDA    3.2
                                                                       CUDA    4.0
                                                                       CUDA    4.2
                                                                       CUDA    5.0
           	24000
                    	1540   	1550   	1560   	1570   	1580   	1590   	1600   	1610    	1620
                                                Dimension




                                       中田 真秀        高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
行列-行列積:Rgemm のパフォーマンス double-double 精度 on
              NVIDIA C2050

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

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

           	16400

           	16200

           	16000

           	15800
   FLOPS




           	15600

           	15400

           	15200
                                                                     CUDA   3.1
           	15000                                                    CUDA   3.2
                                                                     CUDA   4.0
           	14800                                                    CUDA   4.2
                                                                     CUDA   5.0
           	14600
               	1534      	1535      	1536      	1537      	1538      	1539       	1540
                                              Dimension




                                     中田 真秀       高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
コレスキー分解:Rportf パフォーマンス double-double 精度 on
               NVIDIA C2050

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

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

            	900

            	800

            	700

            	600
   FLOPS




            	500

            	400

            	300

            	200                                                       host upper
                                                          CUDA upper (Gemm only)
            	100                                                       host lower
                                                          CUDA lower (Gemm only)
              	0
                	0   	100   	200   	300   	400     	500      	600   	700   	800   	900   	1000
                                                 Dimension



                                      中田 真秀          高精度線形代数演算ライブラリ 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.)     seconds
                       DD(32)                 2.4
                       QD(64)                 25.6
                      GMP(77)                 36.9
                     MPFR(77)                 78.9
                     GMP(154)                 64.0
                     MPFR(154)                111
                   GotoBLAS(16)               0.1


                          中田 真秀      高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
高精度線形代数演算ライブラリ MPACK
          §                                ¤
          http://mplapack.sourceforge.net/
          ¦                                ¥
              中田 真秀@理化学研究所

MPACK: 高精度線形代数演算ライブラリ:BLAS,LAPACK をベース
線形代数演算のビルディングブロック、参照実装、プログラムイン
ターフェース (API) 提供
Version 0.8.0 (2012/12/25); ステータス: MBLAS 完成, MLAPACK
100 ルーチン完成
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 の紹介
今後やりたいこと/やりたくないこと




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




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

Más contenido relacionado

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

200730material fujita
200730material fujita200730material fujita
200730material fujitaRCCSRENKEI
 
卒研発表 バースカ(確認済み)
卒研発表 バースカ(確認済み)卒研発表 バースカ(確認済み)
卒研発表 バースカ(確認済み)Baasanchuluun Batnasan
 
X tapp lecture_20140226
X tapp lecture_20140226X tapp lecture_20140226
X tapp lecture_20140226xTAPP
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価Shintaro Fukushima
 
第7回 配信講義 計算科学技術特論A(2021)
第7回 配信講義 計算科学技術特論A(2021)第7回 配信講義 計算科学技術特論A(2021)
第7回 配信講義 計算科学技術特論A(2021)RCCSRENKEI
 
文献紹介:SlowFast Networks for Video Recognition
文献紹介:SlowFast Networks for Video Recognition文献紹介:SlowFast Networks for Video Recognition
文献紹介:SlowFast Networks for Video RecognitionToru Tamaki
 
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-Yasuyuki Sugai
 
60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオンHiroto Yamakawa
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRShuyo Nakatani
 
ウェブパフォーマンス計測の落とし穴
ウェブパフォーマンス計測の落とし穴ウェブパフォーマンス計測の落とし穴
ウェブパフォーマンス計測の落とし穴Taisuke Yamada
 
NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介NVIDIA Japan
 
NINと画像分類 for 人工知能LT祭
NINと画像分類 for 人工知能LT祭NINと画像分類 for 人工知能LT祭
NINと画像分類 for 人工知能LT祭t dev
 
生活を豊かにするデータ解析と計算機の使われ方の進化
生活を豊かにするデータ解析と計算機の使われ方の進化生活を豊かにするデータ解析と計算機の使われ方の進化
生活を豊かにするデータ解析と計算機の使われ方の進化Naoto MATSUMOTO
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011finalMikio Kubo
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep LearningSatoshi imai
 

Similar a 高精度線形代数演算ライブラリMPACK 0.8.0の紹介 (20)

200730material fujita
200730material fujita200730material fujita
200730material fujita
 
Gurobi python
Gurobi pythonGurobi python
Gurobi python
 
Rokko チュートリアル
Rokko チュートリアルRokko チュートリアル
Rokko チュートリアル
 
卒研発表 バースカ(確認済み)
卒研発表 バースカ(確認済み)卒研発表 バースカ(確認済み)
卒研発表 バースカ(確認済み)
 
Bee Style: Vol.030
Bee Style: Vol.030Bee Style: Vol.030
Bee Style: Vol.030
 
X tapp lecture_20140226
X tapp lecture_20140226X tapp lecture_20140226
X tapp lecture_20140226
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
 
第7回 配信講義 計算科学技術特論A(2021)
第7回 配信講義 計算科学技術特論A(2021)第7回 配信講義 計算科学技術特論A(2021)
第7回 配信講義 計算科学技術特論A(2021)
 
文献紹介:SlowFast Networks for Video Recognition
文献紹介:SlowFast Networks for Video Recognition文献紹介:SlowFast Networks for Video Recognition
文献紹介:SlowFast Networks for Video Recognition
 
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
 
60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン
 
Bee Style:vol.001
Bee Style:vol.001Bee Style:vol.001
Bee Style:vol.001
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
 
BeeStyle: vol.022
BeeStyle: vol.022BeeStyle: vol.022
BeeStyle: vol.022
 
ウェブパフォーマンス計測の落とし穴
ウェブパフォーマンス計測の落とし穴ウェブパフォーマンス計測の落とし穴
ウェブパフォーマンス計測の落とし穴
 
NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介
 
NINと画像分類 for 人工知能LT祭
NINと画像分類 for 人工知能LT祭NINと画像分類 for 人工知能LT祭
NINと画像分類 for 人工知能LT祭
 
生活を豊かにするデータ解析と計算機の使われ方の進化
生活を豊かにするデータ解析と計算機の使われ方の進化生活を豊かにするデータ解析と計算機の使われ方の進化
生活を豊かにするデータ解析と計算機の使われ方の進化
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011final
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
 

Más de Maho Nakata

quantum chemistry on quantum computer handson by Q# (2019/8/4@MDR Hongo, Tokyo)
quantum chemistry on quantum computer handson by Q# (2019/8/4@MDR Hongo, Tokyo)quantum chemistry on quantum computer handson by Q# (2019/8/4@MDR Hongo, Tokyo)
quantum chemistry on quantum computer handson by Q# (2019/8/4@MDR Hongo, Tokyo)Maho Nakata
 
Lie-Trotter-Suzuki分解、特にフラクタル分解について
Lie-Trotter-Suzuki分解、特にフラクタル分解についてLie-Trotter-Suzuki分解、特にフラクタル分解について
Lie-Trotter-Suzuki分解、特にフラクタル分解についてMaho Nakata
 
LiHのポテンシャルエネルギー曲面 を量子コンピュータで行う Q#+位相推定編
LiHのポテンシャルエネルギー曲面 を量子コンピュータで行う Q#+位相推定編LiHのポテンシャルエネルギー曲面 を量子コンピュータで行う Q#+位相推定編
LiHのポテンシャルエネルギー曲面 を量子コンピュータで行う Q#+位相推定編Maho Nakata
 
Q#による量子化学計算 : 水素分子の位相推定について
Q#による量子化学計算 : 水素分子の位相推定についてQ#による量子化学計算 : 水素分子の位相推定について
Q#による量子化学計算 : 水素分子の位相推定についてMaho Nakata
 
量子コンピュータの量子化学計算への応用の現状と展望
量子コンピュータの量子化学計算への応用の現状と展望量子コンピュータの量子化学計算への応用の現状と展望
量子コンピュータの量子化学計算への応用の現状と展望Maho Nakata
 
qubitによる波動関数の虚時間発展のシミュレーション: a review
qubitによる波動関数の虚時間発展のシミュレーション: a reviewqubitによる波動関数の虚時間発展のシミュレーション: a review
qubitによる波動関数の虚時間発展のシミュレーション: a reviewMaho Nakata
 
Openfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part IOpenfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part IMaho Nakata
 
量子コンピュータで量子化学のfullCIが超高速になる(かも
量子コンピュータで量子化学のfullCIが超高速になる(かも量子コンピュータで量子化学のfullCIが超高速になる(かも
量子コンピュータで量子化学のfullCIが超高速になる(かもMaho Nakata
 
20180723 量子コンピュータの量子化学への応用; Bravyi-Kitaev基底の実装
20180723 量子コンピュータの量子化学への応用; Bravyi-Kitaev基底の実装20180723 量子コンピュータの量子化学への応用; Bravyi-Kitaev基底の実装
20180723 量子コンピュータの量子化学への応用; Bravyi-Kitaev基底の実装Maho Nakata
 
第11回分子科学 2017/9/17 Pubchemqcプロジェクト
第11回分子科学 2017/9/17 Pubchemqcプロジェクト第11回分子科学 2017/9/17 Pubchemqcプロジェクト
第11回分子科学 2017/9/17 PubchemqcプロジェクトMaho Nakata
 
Kobeworkshop pubchemqc project
Kobeworkshop pubchemqc projectKobeworkshop pubchemqc project
Kobeworkshop pubchemqc projectMaho Nakata
 
計算化学実習講座:第二回
 計算化学実習講座:第二回 計算化学実習講座:第二回
計算化学実習講座:第二回Maho Nakata
 
計算化学実習講座:第一回
計算化学実習講座:第一回計算化学実習講座:第一回
計算化学実習講座:第一回Maho Nakata
 
HOKUSAIのベンチマーク 理研シンポジウム 中田分
HOKUSAIのベンチマーク 理研シンポジウム 中田分HOKUSAIのベンチマーク 理研シンポジウム 中田分
HOKUSAIのベンチマーク 理研シンポジウム 中田分Maho Nakata
 
為替取引(FX)でのtickdataの加工とMySQLで管理
為替取引(FX)でのtickdataの加工とMySQLで管理為替取引(FX)でのtickdataの加工とMySQLで管理
為替取引(FX)でのtickdataの加工とMySQLで管理Maho Nakata
 
為替のTickdataをDukascopyからダウンロードする
為替のTickdataをDukascopyからダウンロードする為替のTickdataをDukascopyからダウンロードする
為替のTickdataをDukascopyからダウンロードするMaho Nakata
 
HPCS2015 pythonを用いた量子化学プログラムの開発と応用
HPCS2015 pythonを用いた量子化学プログラムの開発と応用HPCS2015 pythonを用いた量子化学プログラムの開発と応用
HPCS2015 pythonを用いた量子化学プログラムの開発と応用Maho Nakata
 
HPCS2015 大規模量子化学計算プログラムSMASHの開発と公開(石村)
HPCS2015 大規模量子化学計算プログラムSMASHの開発と公開(石村)HPCS2015 大規模量子化学計算プログラムSMASHの開発と公開(石村)
HPCS2015 大規模量子化学計算プログラムSMASHの開発と公開(石村)Maho Nakata
 
The PubChemQC Project
The PubChemQC ProjectThe PubChemQC Project
The PubChemQC ProjectMaho Nakata
 
3Dプリンタ導入記 タンパク質の模型をプリントする
3Dプリンタ導入記 タンパク質の模型をプリントする3Dプリンタ導入記 タンパク質の模型をプリントする
3Dプリンタ導入記 タンパク質の模型をプリントするMaho Nakata
 

Más de Maho Nakata (20)

quantum chemistry on quantum computer handson by Q# (2019/8/4@MDR Hongo, Tokyo)
quantum chemistry on quantum computer handson by Q# (2019/8/4@MDR Hongo, Tokyo)quantum chemistry on quantum computer handson by Q# (2019/8/4@MDR Hongo, Tokyo)
quantum chemistry on quantum computer handson by Q# (2019/8/4@MDR Hongo, Tokyo)
 
Lie-Trotter-Suzuki分解、特にフラクタル分解について
Lie-Trotter-Suzuki分解、特にフラクタル分解についてLie-Trotter-Suzuki分解、特にフラクタル分解について
Lie-Trotter-Suzuki分解、特にフラクタル分解について
 
LiHのポテンシャルエネルギー曲面 を量子コンピュータで行う Q#+位相推定編
LiHのポテンシャルエネルギー曲面 を量子コンピュータで行う Q#+位相推定編LiHのポテンシャルエネルギー曲面 を量子コンピュータで行う Q#+位相推定編
LiHのポテンシャルエネルギー曲面 を量子コンピュータで行う Q#+位相推定編
 
Q#による量子化学計算 : 水素分子の位相推定について
Q#による量子化学計算 : 水素分子の位相推定についてQ#による量子化学計算 : 水素分子の位相推定について
Q#による量子化学計算 : 水素分子の位相推定について
 
量子コンピュータの量子化学計算への応用の現状と展望
量子コンピュータの量子化学計算への応用の現状と展望量子コンピュータの量子化学計算への応用の現状と展望
量子コンピュータの量子化学計算への応用の現状と展望
 
qubitによる波動関数の虚時間発展のシミュレーション: a review
qubitによる波動関数の虚時間発展のシミュレーション: a reviewqubitによる波動関数の虚時間発展のシミュレーション: a review
qubitによる波動関数の虚時間発展のシミュレーション: a review
 
Openfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part IOpenfermionを使った分子の計算 part I
Openfermionを使った分子の計算 part I
 
量子コンピュータで量子化学のfullCIが超高速になる(かも
量子コンピュータで量子化学のfullCIが超高速になる(かも量子コンピュータで量子化学のfullCIが超高速になる(かも
量子コンピュータで量子化学のfullCIが超高速になる(かも
 
20180723 量子コンピュータの量子化学への応用; Bravyi-Kitaev基底の実装
20180723 量子コンピュータの量子化学への応用; Bravyi-Kitaev基底の実装20180723 量子コンピュータの量子化学への応用; Bravyi-Kitaev基底の実装
20180723 量子コンピュータの量子化学への応用; Bravyi-Kitaev基底の実装
 
第11回分子科学 2017/9/17 Pubchemqcプロジェクト
第11回分子科学 2017/9/17 Pubchemqcプロジェクト第11回分子科学 2017/9/17 Pubchemqcプロジェクト
第11回分子科学 2017/9/17 Pubchemqcプロジェクト
 
Kobeworkshop pubchemqc project
Kobeworkshop pubchemqc projectKobeworkshop pubchemqc project
Kobeworkshop pubchemqc project
 
計算化学実習講座:第二回
 計算化学実習講座:第二回 計算化学実習講座:第二回
計算化学実習講座:第二回
 
計算化学実習講座:第一回
計算化学実習講座:第一回計算化学実習講座:第一回
計算化学実習講座:第一回
 
HOKUSAIのベンチマーク 理研シンポジウム 中田分
HOKUSAIのベンチマーク 理研シンポジウム 中田分HOKUSAIのベンチマーク 理研シンポジウム 中田分
HOKUSAIのベンチマーク 理研シンポジウム 中田分
 
為替取引(FX)でのtickdataの加工とMySQLで管理
為替取引(FX)でのtickdataの加工とMySQLで管理為替取引(FX)でのtickdataの加工とMySQLで管理
為替取引(FX)でのtickdataの加工とMySQLで管理
 
為替のTickdataをDukascopyからダウンロードする
為替のTickdataをDukascopyからダウンロードする為替のTickdataをDukascopyからダウンロードする
為替のTickdataをDukascopyからダウンロードする
 
HPCS2015 pythonを用いた量子化学プログラムの開発と応用
HPCS2015 pythonを用いた量子化学プログラムの開発と応用HPCS2015 pythonを用いた量子化学プログラムの開発と応用
HPCS2015 pythonを用いた量子化学プログラムの開発と応用
 
HPCS2015 大規模量子化学計算プログラムSMASHの開発と公開(石村)
HPCS2015 大規模量子化学計算プログラムSMASHの開発と公開(石村)HPCS2015 大規模量子化学計算プログラムSMASHの開発と公開(石村)
HPCS2015 大規模量子化学計算プログラムSMASHの開発と公開(石村)
 
The PubChemQC Project
The PubChemQC ProjectThe PubChemQC Project
The PubChemQC Project
 
3Dプリンタ導入記 タンパク質の模型をプリントする
3Dプリンタ導入記 タンパク質の模型をプリントする3Dプリンタ導入記 タンパク質の模型をプリントする
3Dプリンタ導入記 タンパク質の模型をプリントする
 

Último

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 

Último (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

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

  • 1. . 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介 . 中田 真秀 理化学研究所 情報基盤センター 日本数式処理学会東北地区合同分科会@仙台青葉カルチャー センター 602 号室, 2013/1/27 10:40 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 2. 高精度線形代数演算ライブラリ MPACK § ¤ http://mplapack.sourceforge.net/ ¦ ¥ 中田 真秀@理化学研究所 MPACK: 高精度線形代数演算ライブラリ:BLAS,LAPACK をベース 線形代数演算のビルディングブロック、参照実装、プログラムイン ターフェース (API) 提供 Version 0.8.0 (2012/12/25); ステータス: MBLAS 完成, MLAPACK 100 ルーチン完成 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 の紹介
  • 3. 中田のやりたいこと:コンピュータ上での線形代数演算おける精度 問題を解決したい。 人類は、線形代数を有志以来やってきた。エジプトが最古 (パピルス)、中国もガウスの消去法は 1000 年以上前に知って いた (九章算術)。 コンピュータが生まれ、線形代数演算をコンピュータ上で高 速に、大量にやらせることが重要になった。 これまで主にスピードおよび規模を追求してきた。これがコ ンピュータの歴史。 いままで無視してきたこと:線形代数的には精度も重要だとい うこと。 中田はコンピュータ上での線形代数演算おける精度問題を解 決したい。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 4. 中田のやりたいこと:コンピュータ上での線形代数演算おける精度 問題を解決したい。 人類は、線形代数を有志以来やってきた。エジプトが最古 (パピルス)、中国もガウスの消去法は 1000 年以上前に知って いた (九章算術)。 コンピュータが生まれ、線形代数演算をコンピュータ上で高 速に、大量にやらせることが重要になった。 これまで主にスピードおよび規模を追求してきた。これがコ ンピュータの歴史。 いままで無視してきたこと:線形代数的には精度も重要だとい うこと。 中田はコンピュータ上での線形代数演算おける精度問題を解 決したい。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 5. 中田のやりたいこと:コンピュータ上での線形代数演算おける精度 問題を解決したい。 人類は、線形代数を有志以来やってきた。エジプトが最古 (パピルス)、中国もガウスの消去法は 1000 年以上前に知って いた (九章算術)。 コンピュータが生まれ、線形代数演算をコンピュータ上で高 速に、大量にやらせることが重要になった。 これまで主にスピードおよび規模を追求してきた。これがコ ンピュータの歴史。 いままで無視してきたこと:線形代数的には精度も重要だとい うこと。 中田はコンピュータ上での線形代数演算おける精度問題を解 決したい。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 6. 中田のやりたいこと:コンピュータ上での線形代数演算おける精度 問題を解決したい。 人類は、線形代数を有志以来やってきた。エジプトが最古 (パピルス)、中国もガウスの消去法は 1000 年以上前に知って いた (九章算術)。 コンピュータが生まれ、線形代数演算をコンピュータ上で高 速に、大量にやらせることが重要になった。 これまで主にスピードおよび規模を追求してきた。これがコ ンピュータの歴史。 いままで無視してきたこと:線形代数的には精度も重要だとい うこと。 中田はコンピュータ上での線形代数演算おける精度問題を解 決したい。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 7. 中田のやりたいこと:コンピュータ上での線形代数演算おける精度 問題を解決したい。 人類は、線形代数を有志以来やってきた。エジプトが最古 (パピルス)、中国もガウスの消去法は 1000 年以上前に知って いた (九章算術)。 コンピュータが生まれ、線形代数演算をコンピュータ上で高 速に、大量にやらせることが重要になった。 これまで主にスピードおよび規模を追求してきた。これがコ ンピュータの歴史。 いままで無視してきたこと:線形代数的には精度も重要だとい うこと。 中田はコンピュータ上での線形代数演算おける精度問題を解 決したい。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 8. 中田のやりたいこと:コンピュータ上での線形代数演算おける精度 問題を解決したい。 人類は、線形代数を有志以来やってきた。エジプトが最古 (パピルス)、中国もガウスの消去法は 1000 年以上前に知って いた (九章算術)。 コンピュータが生まれ、線形代数演算をコンピュータ上で高 速に、大量にやらせることが重要になった。 これまで主にスピードおよび規模を追求してきた。これがコ ンピュータの歴史。 いままで無視してきたこと:線形代数的には精度も重要だとい うこと。 中田はコンピュータ上での線形代数演算おける精度問題を解 決したい。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 9. どうやってここにきたか 量子化学の研究をしていた (今もしてます 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 の紹介
  • 10. どうやってここにきたか 量子化学の研究をしていた (今もしてます 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 の紹介
  • 11. どうやってここにきたか 量子化学の研究をしていた (今もしてます 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 の紹介
  • 12. どうやってここにきたか 量子化学の研究をしていた (今もしてます 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 の紹介
  • 13. どうやってここにきたか 量子化学の研究をしていた (今もしてます 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 の紹介
  • 14. どうやってここにきたか 量子化学の研究をしていた (今もしてます 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 の紹介
  • 15. どうやってここにきたか 量子化学の研究をしていた (今もしてます 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 の紹介
  • 16. どうやってここにきたか 量子化学の研究をしていた (今もしてます 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 の紹介
  • 17. あらまし はじめに:どうして我々は精度がほしいのか? 浮動小数点数と多倍長精度ライブラリについて。 MPACK, BLAS, LAPACK: 線形代数演算ライブラリ サマリ 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 18. はじめに:どうして我々は精度がほしいのか? 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 19. ペタ、エクサスケールの計算機ではより高い精度が必要となる エクサスケールのコンピュータは 1023 回の浮動小数点演算! を一週間で行う。 コンピュータを使った科学は精度が不足することになるだろ うと考えられる。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 20. ペタ、エクサスケールの計算機ではより高い精度が必要となる エクサスケールのコンピュータは 1023 回の浮動小数点演算! を一週間で行う。 コンピュータを使った科学は精度が不足することになるだろ うと考えられる。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 21. ペタ、エクサスケールの計算機ではより高い精度が必要となる エクサスケールのコンピュータは 1023 回の浮動小数点演算! を一週間で行う。 コンピュータを使った科学は精度が不足することになるだろ うと考えられる。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 24. ペタ、エクサスケールの計算機ではより高い精度が必要となる 半正定値計画問題 (SDP): 解くべき線形方程式の条件数が最 適解付近で発散する。 最適解に近づくほど、数値的に問題が難しくなる。 [Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu] The 1-norm and the estimated 1-norm condition number of shur complement matrix 1e+20 1-cond 1-norm 1e+15 1e+10 100000 1 1e-05 1e-10 0 10 20 30 40 50 60 70 80 90 # of iter. 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 25. ペタ、エクサスケールの計算機ではより高い精度が必要となる 半正定値計画問題 (SDP): 解くべき線形方程式の条件数が最 適解付近で発散する。 最適解に近づくほど、数値的に問題が難しくなる。 [Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu] The 1-norm and the estimated 1-norm condition number of shur complement matrix 1e+20 1-cond 1-norm 1e+15 1e+10 100000 1 1e-05 1e-10 0 10 20 30 40 50 60 70 80 90 # of iter. 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 26. ペタ、エクサスケールの計算機ではより高い精度が必要となる 半正定値計画問題 (SDP): 解くべき線形方程式の条件数が最 適解付近で発散する。 最適解に近づくほど、数値的に問題が難しくなる。 [Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu] The 1-norm and the estimated 1-norm condition number of shur complement matrix 1e+20 1-cond 1-norm 1e+15 1e+10 100000 1 1e-05 1e-10 0 10 20 30 40 50 60 70 80 90 # of iter. 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 27. ペタ、エクサスケールの計算機ではより高い精度が必要となる 半正定値計画問題 (SDP): 解くべき線形方程式の条件数が最 適解付近で発散する。 最適解に近づくほど、数値的に問題が難しくなる。 [Nakata et al 2008], [Nakata 2009], [Waki-Nakata-Muramatsu] The 1-norm and the estimated 1-norm condition number of shur complement matrix 1e+20 1-cond 1-norm 1e+15 1e+10 100000 1 1e-05 1e-10 0 10 20 30 40 50 60 70 80 90 # of iter. 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 28. ペタ、エクサスケールの計算機ではより高い精度が必要となる 今後高精度計算はやりやすくなる。演算器 (CPU, GPU, アク セラレータ) などはどんどん高速になるが、メモリバンド幅 はあがらないため、演算力は余るのでそれは高精度演算に使 える。 其れ以前に Intel Xeon などはとても高速で、演算能力があり 過ぎ。10 年から 20 年前のプログラムは、力技で工夫なくそ のまま高精度化しても、十分高速。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 29. ペタ、エクサスケールの計算機ではより高い精度が必要となる 今後高精度計算はやりやすくなる。演算器 (CPU, GPU, アク セラレータ) などはどんどん高速になるが、メモリバンド幅 はあがらないため、演算力は余るのでそれは高精度演算に使 える。 其れ以前に Intel Xeon などはとても高速で、演算能力があり 過ぎ。10 年から 20 年前のプログラムは、力技で工夫なくそ のまま高精度化しても、十分高速。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 30. ペタ、エクサスケールの計算機ではより高い精度が必要となる 今後高精度計算はやりやすくなる。演算器 (CPU, GPU, アク セラレータ) などはどんどん高速になるが、メモリバンド幅 はあがらないため、演算力は余るのでそれは高精度演算に使 える。 其れ以前に Intel Xeon などはとても高速で、演算能力があり 過ぎ。10 年から 20 年前のプログラムは、力技で工夫なくそ のまま高精度化しても、十分高速。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 31. 浮動小数点数と多倍長精度ライブラリについて 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 32. 倍精度: 最もよく使われている浮動小数点数 “754-2008 IEEE Standard for Floating-Point Arithmetic” binary64 (倍精度) フォーマットは 10 進 16 桁の有効桁がある 多くのプラットフォームで使われていて、高速。Core i7 920: ∼40GFLOPS; RADEON HD7970 ∼1000GFLOPS, 京コン ピュータ ∼ 10PFLOPS) § ¤ 問題点:演算に丸め誤差が入ることがある ¥ ¦ 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 33. 丸め誤差対策に、多倍長精度計算を使う § ¤ 多倍長精度を使う: あんまり考えず、力づくで処理 ¥ ¦ 浮動小数点数: コンピュータ上での実数の近似表現の一つ a + (b + c) (a + b) + c 浮動小数点数、演算の種類によっては計算結果に誤差が入る。 倍精度は 10 進 16 桁の精度しか持たない。 1 + 0.0000000000000001 = 1 解決方法の一つ: 多倍長精度計算 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 34. 丸め誤差対策に、多倍長精度計算を使う § ¤ 多倍長精度を使う: あんまり考えず、力づくで処理 ¥ ¦ 浮動小数点数: コンピュータ上での実数の近似表現の一つ a + (b + c) (a + b) + c 浮動小数点数、演算の種類によっては計算結果に誤差が入る。 倍精度は 10 進 16 桁の精度しか持たない。 1 + 0.0000000000000001 = 1 解決方法の一つ: 多倍長精度計算 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 35. 丸め誤差対策に、多倍長精度計算を使う § ¤ 多倍長精度を使う: あんまり考えず、力づくで処理 ¥ ¦ 浮動小数点数: コンピュータ上での実数の近似表現の一つ a + (b + c) (a + b) + c 浮動小数点数、演算の種類によっては計算結果に誤差が入る。 倍精度は 10 進 16 桁の精度しか持たない。 1 + 0.0000000000000001 = 1 解決方法の一つ: 多倍長精度計算 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 36. 丸め誤差対策に、多倍長精度計算を使う § ¤ 多倍長精度を使う: あんまり考えず、力づくで処理 ¥ ¦ 浮動小数点数: コンピュータ上での実数の近似表現の一つ a + (b + c) (a + b) + c 浮動小数点数、演算の種類によっては計算結果に誤差が入る。 倍精度は 10 進 16 桁の精度しか持たない。 1 + 0.0000000000000001 = 1 解決方法の一つ: 多倍長精度計算 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 37. 丸め誤差対策に、多倍長精度計算を使う § ¤ 多倍長精度を使う: あんまり考えず、力づくで処理 ¥ ¦ 浮動小数点数: コンピュータ上での実数の近似表現の一つ a + (b + c) (a + b) + c 浮動小数点数、演算の種類によっては計算結果に誤差が入る。 倍精度は 10 進 16 桁の精度しか持たない。 1 + 0.0000000000000001 = 1 解決方法の一つ: 多倍長精度計算 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 38. 多倍長精度、多倍長精度計算とは? § ¤ 多倍長精度とは、浮動小数点数で仮数部を大きく取る精度 ¥ ¦ GMP というライブラリが有名。http://gmplib.org/ 仮数部は任意に大きくとれる。 演算はソフトウェア的に実装してある。 これは最も高速なライブラリだが、それでも演算はかなり 遅い。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 39. 多倍長精度、多倍長精度計算とは? § ¤ 多倍長精度とは、浮動小数点数で仮数部を大きく取る精度 ¥ ¦ GMP というライブラリが有名。http://gmplib.org/ 仮数部は任意に大きくとれる。 演算はソフトウェア的に実装してある。 これは最も高速なライブラリだが、それでも演算はかなり 遅い。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 40. 他の多倍長精度演算ライブラリについて 他の多倍長精度演算ライブラリについて: QD ライブラリ: double-double (quad-double) 精度 : 10 進 32 (64) 桁、非常に高速 binary128, IEEE 754 2008 の四倍精度。 IEEE754 スタイルの多倍長精度演算ライブラリ: MPFR (実 数) および MPC (複素数)。 § 一番厳密なのは MPFR+MPC の組み合わせ。これを正本として作成して ¦ 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 41. 他の多倍長精度演算ライブラリについて 他の多倍長精度演算ライブラリについて: QD ライブラリ: double-double (quad-double) 精度 : 10 進 32 (64) 桁、非常に高速 binary128, IEEE 754 2008 の四倍精度。 IEEE754 スタイルの多倍長精度演算ライブラリ: MPFR (実 数) および MPC (複素数)。 § 一番厳密なのは MPFR+MPC の組み合わせ。これを正本として作成して ¦ 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 42. 他の多倍長精度演算ライブラリについて 他の多倍長精度演算ライブラリについて: QD ライブラリ: double-double (quad-double) 精度 : 10 進 32 (64) 桁、非常に高速 binary128, IEEE 754 2008 の四倍精度。 IEEE754 スタイルの多倍長精度演算ライブラリ: MPFR (実 数) および MPC (複素数)。 § 一番厳密なのは MPFR+MPC の組み合わせ。これを正本として作成して ¦ 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 43. 多倍長精度演算ライブラリのまとめ 精度 丸め スピード  複素数 コメント  GMP 任意 なし △ とりあえず よく使われる MPFR 任意 厳密 遅い 厳密 最も厳密 DD 32 桁 ? 高速 とりあえず 倍精度演算で実現 QD 64 桁 ? GMP の 2 倍? とりあえず 指数部削られ過ぎ double 16 桁 ハード 超高速 コンパイラ依存 最も高速 binary128 32 桁 ? 遅い コンパイラ依存 gcc/icc でサポート有 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 44. BLAS, LAPACK, MPACK の紹介 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 45. BLAS、LAPACK とは? BLAS: さまざまなタイプのベクトル-ベクトル、行列-ベクト ル、行列-行列演算の参照実装。高速な実装も入手できる。た とえば OpenBLAS(GotoBLAS2), Intel MKL, ATLAS など。 LAPACK: 連立一次方程式、固有値問題、最小二乗法をとく。 デファクトスタンダードなライブラリ。多くのソフトウェア がこれを参照している。 LAPACK の web ページのヒット数: 110,343,542 (Mon Dec 10 16:20:25 EST 2012) § ¤ ¦BLAS と LAPACK は大変重要なライブラリ ¥ 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 46. BLAS、LAPACK とは? BLAS: さまざまなタイプのベクトル-ベクトル、行列-ベクト ル、行列-行列演算の参照実装。高速な実装も入手できる。た とえば OpenBLAS(GotoBLAS2), Intel MKL, ATLAS など。 LAPACK: 連立一次方程式、固有値問題、最小二乗法をとく。 デファクトスタンダードなライブラリ。多くのソフトウェア がこれを参照している。 LAPACK の web ページのヒット数: 110,343,542 (Mon Dec 10 16:20:25 EST 2012) § ¤ ¦BLAS と LAPACK は大変重要なライブラリ ¥ 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 47. 高精度線形代数演算ライブラリ MPACK § ¤ http://mplapack.sourceforge.net/ ¦ ¥ 中田 真秀@理化学研究所 MPACK: 高精度線形代数演算ライブラリ:BLAS,LAPACK をベース 線形代数演算のビルディングブロック、参照実装、プログラムイン ターフェース (API) 提供 Version 0.8.0 (2012/12/25); ステータス: MBLAS 完成, MLAPACK 100 ルーチン完成 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 の紹介
  • 48. MPACK 0.8.0: できることとできないこと Version 0.8.0 (2012/12/25); ステータス: MBLAS 完成, MLAPACK 100 ルーチン完成 Rgemm (行列-行列積) : OpenMP で加速 Rgemm の倍々精度は NVIDIA C2050 での GPU 加速 MLAPACK : 対称、エルミート行列の固有値問題、LU 分解、コレス キー分解、条件数推定、逆行列 MLAPACK: 一般固有値問題、特異値分解、最小に情報、QR 分解な ど... 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 49. MPACK の用途 数値的に不安定な問題を解く場合:反復法、半正定値法の最適解 付近。 計算機援用証明を行いたい場合。 精度保証を行いたい場合: INTLAB とコラボレーションできないか? 既存の C++のコードを労力少なく多倍長化したいとき。 4 倍精度程度の計算を高速に行いたい場合。 精度を実行時に様々に変化させたい場合。 数値的に不安なときのデバッグに使う。 (カジュアルに、例えば) ある値が 0 であることを確認したい場合。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 50. 関数の名前の付け方:プログラムインターフェース (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 の紹介
  • 51. MBLAS 0.8.0 でサポートされている全 76 ルーチン LEVEL1 MBLAS Crotg Cscal Rrotg Rrot Rrotm CRrot Cswap Rswap CRscal Rscal Ccopy Rcopy Caxpy Raxpy Rdot Cdotc Cdotu RCnrm2 Rnrm2 Rasum iCasum iRamax RCabs1 Mlsame Mxerbla LEVEL2 MBLAS Cgemv Rgemv Cgbmv Rgbmv Chemv Chbmv Chpmv Rsymv Rsbmv Ctrmv Cgemv Rgemv Cgbmv Rgemv Chemv Chbmv Chpmv Rsymv Rsbmv Rspmv Ctrmv Rtrmv Ctbmv Ctpmv Rtpmv Ctrsv Rtrsv Ctbsv Rtbsv Ctpsv Rger Cgeru Cgerc Cher Chpr Cher2 Chpr2 Rsyr Rspr Rsyr2 Rspr2 LEVEL3 MBLAS Cgemm Rgemm Csymm Rsymm Chemm Csyrk Rsyrk Cherk Csyr2k Rsyr2k Cher2k Ctrmm Rtrmm Ctrsm Rtrsm 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 52. MLAPACK 0.8.0 でサポートされている全 100 ルーチン Mutils Rlamch Rlae2 Rlaev2 Claev2 Rlassq Classq Rlanst Clanht Rlansy Clansy Clanhe Rlapy2 Rlarfg Rlapy3 Rladiv Cladiv Clarfg Rlartg Clartg Rlaset Claset Rlasr Clasr Rpotf2 Clacgv Cpotf2 Rlascl Clascl Rlasrt Rsytd2 Chetd2 Rsteqr Csteqr Rsterf Rlarf Clarf Rorg2l Cung2l Rorg2r Cung2r Rlarft Clarft Rlarfb Clarfb Rorgqr Cungqr Rorgql Cungql Rlatrd Clatrd Rsytrd Chetrd Rorgtr Cungtr Rsyev Cheev Rpotrf Cpotrf Clacrm Rtrti2 Ctrti2 Rtrtri Ctrtri Rgetf2 Cgetf2 Rlaswp Claswp Rgetrf Cgetrf Rgetri Cgetri Rgetrs Cgetrs Rgesv Cgesv Rtrtrs Ctrtrs Rlasyf Clasyf Clahef Clacrt Claesy Crot Cspmv Cspr Csymv Csyr iCmax1 RCsum1 Rpotrs Rposv Rgeequ Rlatrs Rlange Rgecon Rlauu2 Rlauum Rpotri Rpocon 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 53. 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 の紹介
  • 54. プログラミング詳細 型は 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 の紹介
  • 55. MBLAS の実装例 Caxpy: Complex version of axpy void Caxpy(INTEGER n, COMPLEX ca, COMPLEX * cx, INTEGER incx, COMPLEX * cy, INTE { 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 の紹介
  • 56. 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 の紹介
  • 57. MPACK (MBLAS/MLAPACK) についての事実 Google に”Multiple precision BLAS” でお尋ねすると私のペー ジおよび関連ページばかりがヒット ダウンロードは 2013/1/26 現在 3043 ダウンロード。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 58. 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); 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 59. MLAPACK の品質保証   § ¤ 収束の概念が入るため、とても難しい ¥ ¦ 同じように様々な値を代入して、MPFR+MPC 版と LAPACK と一致を得る。 収束の概念が入ってくるルーチンもある。 代数的操作しかないルーチンもあるし、反復するものでもだ いたい ok 研究に用いると無限ループなどに陥る場合がある。これでも バグがわかる。(Waki et al.) 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 60. 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 の紹介
  • 61. ベクトル演算: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 in parenthesis MP Library(sign. digs.) Flops (OpenMP) DD(32) 130(570)M QD(64) 13.7(67)M GMP(77) 11.3(45)M GMP(154) 7.6(32)M MPFR(154) 3.7(17)M GotoBLAS(16) 1.5G 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 62. 行列-ベクトル積: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) 140M QD(64) 13M GMP(77) 11.1M MPFR(77) 4.7M GMP(154) 7.1M MPFR(154) 3.7M GotoBLAS(16) 3.8G 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 63. 行列-行列積: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)M QD(64) 13.9 (63)M GMP(77) 11.5 (44)M MPFR(77) 4.6 (20)M GMP(154) 7.2 (28) M MPFR(154) 3.7 (16) M GotoBLAS(16) 42.5G 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 64. 行列-行列積:Rgemm のパフォーマンス: 倍々精度 (擬似的な 4 倍精 度) Westmere EP Intel Composer, Intel WestmereEP, 40 cores, 2.4GHz: apporx 5GFlops 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 65. 行列-行列積:Rgemm のパフォーマンス: GMP (154 桁) Westmere EP Intel Composer, Intel WestmereEP, 40 cores, 2.4GHz, approx. 0.2GFlops 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 66. 行列-行列積:Rgemm のパフォーマンス: 倍々精度 (擬似的な四倍精 度) Magnycours 48cores GCC 4.6, Magny cours 2.4GHz, 48 cores : approx 3GFlops 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 67. 行列-行列積:Rgemm のパフォーマンス: binary128 (本物の四倍精 度) Magnycours 48cores GCC 4.6, Magny cours 2.4GHz, 48 cores : approx 0.3GFlops 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 68. 行列-行列積:Rgemm のパフォーマンス: GMP (154 桁) Magnycours 48cores GCC 4.6, Magny cours 2.4GHz, 48 cores: approx 0.15GFlops 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 69. 行列-行列積:Rgemm のパフォーマンス: binary128 (本物の四倍精 度) X5680@3.33GHz Intel Composer 2013, Xeon X5680@3.33GHz Rgemm (__float128) performance 700 600 500 400 FLOPS 300 NN NT TN 200 TT NN 24 NN gcc 100 NT gcc TN gcc TT gcc 0 0 100 200 300 400 500 600 700 800 900 1000 Dimension 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 70. 行列-行列積:Rgemm のパフォーマンス double-double 精度 on NVIDIA C2050 CUDA 3.2, NVIDIA C2050, 16GFlops-26GFlops 高速かつ安定した パフォーマンス 25 20 GFLOPS 15 10 QuadMul−Sloppy, QuadAdd−Cray Kernel QuadMul−Sloppy, QuadAdd−Cray Total QuadMul−FMA, QuadAdd−Cray Kernel QuadMul−FMA, QuadAdd−Cray Total 5 QuadMul−Sloppy, QuadAdd−IEEE Kernel QuadMul−Sloppy, QuadAdd−IEEE Total QuadMul−FMA, QuadAdd−IEEE Kernel QuadMul−FMA, QuadAdd−IEEE Total 0 0 1000 2000 3000 4000 5000 6000 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介 Dimension
  • 71. 行列-行列積:Rgemm のパフォーマンス double-double 精度 on NVIDIA C2050 CUDA さまざまなバージョンを用いた比較 Rgemm (double-doule) performance on NVIDIA C2050 27000 26500 26000 FLOPS 25500 25000 CUDA 3.1 24500 CUDA 3.2 CUDA 4.0 CUDA 4.2 CUDA 5.0 24000 1540 1550 1560 1570 1580 1590 1600 1610 1620 Dimension 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 72. 行列-行列積:Rgemm のパフォーマンス double-double 精度 on NVIDIA C2050 CUDA さまざまなバージョンを用いた比較。 Rgemm (double-doule) QuadADD-IEEE, QuadMul-FMA performance on NVIDIA C2050 16600 16400 16200 16000 15800 FLOPS 15600 15400 15200 CUDA 3.1 15000 CUDA 3.2 CUDA 4.0 14800 CUDA 4.2 CUDA 5.0 14600 1534 1535 1536 1537 1538 1539 1540 Dimension 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 73. コレスキー分解:Rportf パフォーマンス double-double 精度 on NVIDIA C2050 コレスキー分解分解を行った。Rgemm の加速によりコレスキー 分解も加速される。 Rpotrf performance by NVIDIA C2050 (Note: gpu'ed Rgemm only) 1000 900 800 700 600 FLOPS 500 400 300 200 host upper CUDA upper (Gemm only) 100 host lower CUDA lower (Gemm only) 0 0 100 200 300 400 500 600 700 800 900 1000 Dimension 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 74. 対称固有値問題: 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.) seconds DD(32) 2.4 QD(64) 25.6 GMP(77) 36.9 MPFR(77) 78.9 GMP(154) 64.0 MPFR(154) 111 GotoBLAS(16) 0.1 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介
  • 75. 高精度線形代数演算ライブラリ MPACK § ¤ http://mplapack.sourceforge.net/ ¦ ¥ 中田 真秀@理化学研究所 MPACK: 高精度線形代数演算ライブラリ:BLAS,LAPACK をベース 線形代数演算のビルディングブロック、参照実装、プログラムイン ターフェース (API) 提供 Version 0.8.0 (2012/12/25); ステータス: MBLAS 完成, MLAPACK 100 ルーチン完成 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 の紹介
  • 76. 今後やりたいこと/やりたくないこと 精度保証の研究成果の取り込み。 LAPACK の実装されてない関数の実装。 疎行列、高速フーリエ変換 (FFT) の API の策定。 QPBLAS GPU の取り込み。 区間演算はやらない。 中田 真秀 高精度線形代数演算ライブラリ MPACK 0.8.0 の紹介