14.04上でBLASをパッケージで入れて使ってみたのでメモを残しておきます。Subprogramsの略で、行列積などの基本的な行列計算のためのライブラリです。LAPACKなどの様々なプログラムから呼び出されます。行列計算は環境によって最適な書き方が違うので、行列計算の部分を差し替え可能なように分離しておきユーザが最適なBLASに差し替えて最高の性能を出す、ということを意図しています。BLAS」と呼ばれるものになっています。BLASが入っていました。この場合例えばnumpyの行列計算は、全くCPU本来の性能を出せていません。14.04では、atlasとopenblasという高速なBLASがパッケージで提供されています。今回は、それらをインストールしてnumpyの速度がどうなるか調べてみました。インストールは次のように行いました。libraryとして同一のファイル名になっています。linkを張り直すことによって使い分ける仕組みがあります。個の選択肢があり>ます。Enter、さもなければ選択肢の番号のキーを押してください:のように表示され、どのBLASを使うか選択することができます。インストールした場合はUbuntuが定めた優先度に従って選ばれるようで、openblasが選択された状態でした。これを切り替えてnumpyで5000x5000の逆行列を計算させてみて、速度がどうなるか計測してみました。VMwareを使ってメモリを4G、CPUコアを4個与えた状態で行いました。time()-t241.60200095176697このように241秒かかりました。ATLASに切り替えてみました。time()-t32.5946981906890932秒に高速化されました。topでCPUを見ると100%となっており、どうやら一つのコアしか使っていないようです。最後にopenblasです。time()-t6.0147957801818856秒まで高速化されました。topのCPU表示は400%となり、4コア使って計算しているようです。テキサス大学の後藤先生という方が開発したgotoblas(ごとうブラス)という高速で有名なパッケージがあったのですが、後藤先生がIntelに移られて開発が中止してしまい、それを有志が引き継いだのがopenblasです。Libraryの開発をされているようです。最後に、ATLASに関して少し注釈を述べておきます。Softwareの略で、ライブラリのmake時にそのCPUのコア数やキャッシュサイズなどを調査し、それに最適化したライブラリを生成する仕組みです。本来バイナリパッケージで入れるには適さないもので、ATLASの真の性能を引き出すには計算を行うCPUでライブラリをmakeし直す必要があります。ATLASはLAPACKの一部を高速化したものを含んでいて、ATLASをインストールするとATLAS版LAPACKがインストールされます。個の選択肢があります。このように優先度が低くなっており、デフォルトでは使われていません。これがUbuntuの(というかDebianの)開発チームの見解ということでしょうか。9をubuntu上のoctaveで使うInformation精度保証付き数値計算のことなど、いろいろつぶやく予定。