参考
概要
R言語の計算速度はそれほど速くはないが、いくつか工夫することで高速化が可能。
- ベクトル演算の駆使
- 並列化(paralell, future, furrrなど)
- BLAS (Basic Linear Algebra Subprograms) の変更
今回はBLASの変更による高速化について。
BLASとは
BLASは、行列演算を高速に行うためのライブラリ。たとえば分散や共分散を計算するときは、行列の掛け算をする必要がある。機械学習やニューラルネットワークでは行列の掛け算が多用されるため、BLASの高速化は全体としての計算速度の向上に大きく貢献する。
BLASはオープンソースのものもあるが、各CPU、GPUメーカーがそれぞれのチップに適したライブラリを提供している。
- RについてるBLAS
- RにデフォルトでついてくるBLAS
- OpenBLAS
- オープンソースのBLASで、homebrewでインストール可能
- pythonのnumpyで使われているらしい
- ATLAS
- こちらもオープンソース
- MKL
- Intelが提供するBLAS
- Macだと使えない
- NVBLAS
- NVIDIAが提供するBLAS
- GPUを使用するのでめちゃくちゃ速いらしい
- NVIDIAのGPUじゃないと使えない…
- Accelerate
- Appleが提供
- 今回使用するやつ
BLASの変更
以下、homebrewでRをインストールしていることを前提とする。
terminalで以下のコマンドを実行する。
cd /Library/Frameworks/R.framework/Resources/lib
ln -sf libRblas.veclib.dylib libRblas.dylib
意味としては、RはlibRblas.dylib
をBLASとして認識するので、libRblas.veclib.dylib
をlibRblas.dylib
にリンクすることで、libRblas.veclib.dylib
をBLASとして使うようにする。
もどすときはlibRblas.veclib.dylib
の代わりに、libRblas.0.dylib
(デフォルトのBLAS)をリンクすればよい。
cd /Library/Frameworks/R.framework/Resources/lib
ln -sf libRblas.0.dylib libRblas.dylib