トップ «前の日記(2010-11-04) 最新 次の日記(2010-11-15)» 編集

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|

2010-11-10 [長年日記]

_ [SAD][Fortran][数学]BLAS & LAPACKライブラリの選び方

  • LAPACK-3.2.2 & BLAS-1.0
    • Netlib.orgで配布されている参照実装
    • ライセンス的には一番緩い?(原著者への正しいクレジットの表記のみ)
    • 最適化BLAS & LAPACKがおかしいときの比較用に持っておいて損はない
    • 3.2.2でも実用上問題になる Errtaが有るので、Errataリストには目を通すこと
  • ATLAS
    • 3条項 BSDライセンス(宣伝条項無し)
    • 比較的に広い環境でそれなりの性能が出るソース付き最適化BLAS & LAPACK実装
    • コンパイル時に行う自動チューニングの時間が長いのが玉に瑕
    • 安定版の3.8.3と開発版の3.9.x系列がある
      • 一部環境では、3.8.3の性能に難があるため 3.9.xがおすすめ(Opteronでの QR分解とか)
  • GotoBLAS-2.1.3
    • ソース付きだがライセンスは厳しい(再配布は出来ません)
    • Texas Advanced Computing Center製 後藤BLASの最終版らしい(中の人がMicrosoftに移籍)
    • 埋め込まれるLAPACKは、少し古めのLAPACK-3.1.1なので Errataに要注意
      • LAPACK-3.2.xでは修正済みの結構致命的なErrataがある
      • Working areaの LQUERY系は運用でごまかせるが、収束性や停止性にまつわる致命的 Errataあり
    • ソース付きの最適化BLAS & LAPACKとしては私の知る範囲では最速、測定条件によっては商業ライブラリを上回る性能を叩き出す
  • ACML-4.0.0
    • AMDが自社CPU向けに用意してる最適化BLAS & LAPACKを含む数学ライブラリ
    • 開発者は、無料でダウンロード可能
    • Windows/Linux向けのバイナリ提供のみ
    • Linux gfortran環境向けバイナリなら、ELFかつLinuxと ABI互換な gfortran環境で利用可能と思われる
  • IMKL-10.3
    • Intelが自社CPU向けに用意してる最適化BLAS & LAPACKを含む数学ライブラリ
    • 商品なので購入してください(単品もしくはC/Fortranコンパイラ商品に付属)
    • Windows/Linux/MacOSX向けのバイナリ提供のみ
      • 基本的には Intelコンパイラと組み合わせ
      • gfortranも可能だが、4.4.0以降はサポートしない(libgfortran APIが変更されてる)
  • NAG Fortran Library
    • Numerical Algorithms Groupの最適化BLAS & LAPACKを含む数学ライブラリ
    • 商品なので購入してください
    • Windows/Linux/MacOSX向けのバイナリ提供のみ
    • BLAS & LAPACKにも nagの中の人のクレジットが入るくらいなので品質と性能は信用できる
  • NVIDIA CUDA BLAS
    • CUDA Toolkitに含まれる Tesla/Fermi GPU上で動く並列BLAS
    • 行列サイズがある程度大きければ、CPUは追いつけない(演算・メモリ帯域的に)
    • 今時のMany coreマシンで、複数ユーザーが同時にジョブを流す場合は問題有

ほかにも、Fortranコンパイラベンダ謹製の最適化BLAS & LAPACKがあるようです

手元の Opteron 2376で測定した固有値分解(*GEEVX)やSVD(*GESDD)の single core性能だと

GotoBLAS-2.1.3 > ACML-4.0.0 > ATLAS-3.9.11 >> ATLAS-3.8.3 >> LAPACK-3.2.2

でした。

ATLASに関しては、3.9.3辺り QR分解まわりの改良が効いてるのか安定版と 大きな性能差が出ました。

トップ3ライブラリの差は10%前後ですが、GotoBLASの速さが目立ちました。 (ACML-4.0.0と ATLAS-3.9.11は、結構接戦でした)

まとめると...

  • LAPACK-3.1.1の Errataを考えると ACML-4.0.0か ATLAS-3.9.xを選ぶのが better
  • Errataを避けられる用途に限定する場合、GotoBLAS最速

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記