Rに代替のBLASを使用すると、いくつかの利点があります。 https://cran.r-project.org/web/packages/gcbd/vignettes/gcbd.pdf 。
Microsoft R Open https://mran.revolutionanalytics.com/documents/rro/installation/#sysreq は、計算を高速化するためにデフォルトのリファレンスBLASの代わりにIntelのMKLを使用しています。
私の質問は:
正確にはIntelのMKLライブラリを手動でリンクする手順** = Windows上のR **の最新バージョン( https://cran.r-project.org/bin/windows/base / )?
PDATE 20-07-2016:ここでは、64ビットR for Windows for R≥3.3.0用のOpenBLASベースのRblas.dllをビルドする方法についての非常に詳細な説明を示します。 http: //www.avrahamadler.com/r-tips/build-openblas-for-windows-r64/
Windowsでは、ディレクトリProgram Files/R/R-XX.XX.XX/bin/x64(たとえば、最新のRディストリビューション)の場合、ファイルlibiomp5md.dll、Rblas.dll、Rlapack.dllを次のように上書きします インテルMKLの対応物 マルチスレッドの行列演算を実行します。私にとって、これは通常、マトリックス演算の速度を約10倍向上させるため、それだけの価値があります。これで問題が解決するかどうかお知らせください。上記のDropboxリンクを経由する以外に、 Microsoft Open R をインストールするだけでこれらのファイルを取得し、そこから最新のRインストールにファイルをコピーすることもできます(RStudioに、 Microsoft Open Rの代わりにRの通常バージョン)。これは、R全体を再コンパイルする必要があるよりもずっと簡単です...
r 3.5.1のインストールを試しました。 Microsoft R OpenをCRAN Rと一緒にインストールし、libiomp5md.dllをコピーして、Rblas.dll、Rlapack.dllをMRO MKLの対応するものから上書きして、Windows上のCRAN Rにリンクします(上記の別の回答と同様ですが、ファイルlibiomp5md.dllをコピーする必要があります)同じように)。これはうまくいき、CRAN RはGithubのversion.compareパッケージ( https://github.com/andrie/version.compare )に従ってMROと同じくらい速く実行されます
builder を使用して作成したカスタムDLLとR 3.6.0をリンクすることができました。基本的に、同じシンボルRblas.dll
とRlapack.dll
がエクスポートする必要があります。 Compiler 19.0 Update 4 for Intel 64 Visual Studio 2017 environment
コマンドプロンプトを起動します。
シンボルを取得します。
dumpbin /exports Rblas.dll > Rblas_list
dumpbin /exports Rlapack.dll > Rlapack_list_R
「ヘッダー」と「フッター」を削除して両方のファイルを編集し、シンボル名(例:248 F7 00138CE0 dgeevx_
)を含むすべての行をdgeevx_
(名前のみ)のようにします。 builder
ディレクトリをPCのどこかにコピーし、その中で実行します。
# blas links fine
nmake libintel64 export=..path..\Rblas_list name=Rblas
# save lapack errors in another list
nmake libintel64 export=..path..\Rlapack_list_R name=Rlapack 1> undefined_symbols_list
編集undefined_symbols_list
各行の名前のみを保持し、違いのある新しいリストを作成します
findstr /v /g:undefined_symbols_list Rlapack_list_R > Rlapack_list
nmake libintel64 export=..path..\Rlapack_list name=Rlapack # this should link
dumpbin /dependents Rlapack.dll
を使用すると、mklインストールのredist
フォルダー内にあるlibiomp5md.dll
に依存していることがわかります。