Rの線形代数学ライブラリは遅いことで有名である。Linuxだと簡単にそれを高速な線形代数学ライブラリであるOpenBLASに変えることができる一方で、WindowsでOpenBLASをRとリンクさせるのは結構面倒な作業が必要で面倒だった。
今回はそんな面倒なコンパイルをせずに、簡単にWindowsのRを高速にする方法を紹介する
方法
- まず、Rを立ち上げて以下のコードを実行し、時間を記録してRを閉じる。私の場合は20秒だった。
x <- matrix(rnorm(9e+6),3e+3,3e+3)
system.time(mtx <- x %*% x)
- 次に、使用しているRプログラムが入っているディレクトリを確認しよう。Windowsであれば多くの場合、C:\Program Files\Rであるはずである。私のRのバージョンは4.2.1C:\Program Files\R\R-4.2.1\bin\x64だったので、エクスプローラで開き、フォルダにあるRblas.dllをRblas_temp.dllに名前を変更する。
- このページからhttps://github.com/xianyi/OpenBLAS/releases zipファイルをダウンロードする。Win 64bit なら「OpenBLAS-0.○○.○○-x64.zip」をDL
- 解凍後にそのフォルダにある”OpenBLAS-0.3.23-x64\bin\libopenblas.dll”をコピーして、Rが入っている”C:\Program Files\R\R-4.2.1\bin\x64″に貼り付ける
- 貼り付けたlibopenblas.dllをRblas.dllに名前を変更し、Rを起動後、同様に上のプログラムを回して速度のスピードを比較する。
- 私の環境では0.17秒で、約48倍高速になった。
参考文献
- https://www.bilibili.com/read/cv12524943