GotoBLAS2 をコンパイルして使う

線形代数ライブラリ BLAS の高速実装である GotoBLAS2 http://www.tacc.utexas.edu/tacc-projects/gotoblas2。開発者が移籍したとかで開発が止まっているが、ファイルは提供されている。これを Ubuntu 12.04 LTS でコンパイルしようとした。CPU は Xeon X5690@3.47GHz x 2 (物理12コア, HTTで24コア)。

./quickbuild.64bit を使ったが、invalid operand 云々と出てコンパイル中にエラーになった。http://margaret-sdpara.blogspot.jp/2010/11/gotoblas2.html のコメントにある通り、make に TARGET=NEHALEM を指定したらうまくコンパイルできた。
(なお、-j 24 などとして並列コンパイルしたら、最後の最後でエラーになった)

中田先生 http://nakatamaho.riken.jp/ の「BLAS, LAPACKチュートリアル」に従い、LD_PRELOAD で Octave に読み込ませて行列積のベンチマークをしたところ、146.44GFLOPS を観測した。デフォルトの BLAS では、10.353GFLOPS であった。すばらしい。なお、理論性能は、HTT 無効とすると、3.47*4*12=166.56GFLOPS。

ちなみに最近登場した Geforce GTX Titan は、GeForce シリーズとしては珍しく、倍精度の意図的な速度低下がされていないので、単精度 4.5TFLOPS, 倍精度1.3TFLOPS 発揮するらしい。10万円強と高価であるが、Tesla にくらべると 8分の1 の価格で購入できる。これで分子シミュレーションを走らせたら、クラスタ使わなくても膜タンパク質の全原子計算が手の届く範囲に……?

追記: R の組み込みの演算子 %*% では、だいたい 3GFLOPS であった。