2015-05-01 67 views
3

我發現使用BLAS/ATLAS/MKL/OPENBLAS中的一種可以改進R的速度。但是,它仍然會改進用C或C++編寫的R包嗎?例如, ,R包Glmnet在FORTRAN中實現,R包rpart在C++中實現。它只是安裝BLAS/...等會提高執行時間嗎?或者我們是否必須重建(建立新的C代碼)基於BLAS/...等的軟件包?安裝BLAS/ATLAS/MKL/OPENBLAS是否會加速用C/C++編寫的R包?

+0

您必須根據BLAS/ATLAS/MKL/OPENBLAS編譯所有內容,即R本身以及需要編譯的所有包。 –

+0

感謝您的評論帕斯卡。那麼,如果我使用BLAS/ATLAS等進行編譯,使用現有的C/C++代碼R包會提高速度嗎? –

+0

@帕斯卡爾:這是不正確的,我在下面提供了更多的細節。 –

回答

8

經常聲明,包括在這裏的評論,「你必須重新編譯R」使用不同的BLAS或LAPACK庫。那是錯的。

你做不必重新編譯R只要它是針對BLAS和LAPACK的共享庫版本構建的。

我有一個package and vignette on CRAN它使用這個事實來提供一個基準框架,其中不同的BLAS和LAPACK版本通過安裝不同的版本(一個在Debian/Ubuntu中的命令)和運行基準測試來對每個版本計時 - 這非常直截了當它可以在諸如此類的包中自動執行。

該軟件包中的結果將提供可能的速度差異的想法。他們究竟是如何移出的取決於你的計算機,你的數據(大小),你的問題等等。但是,如果你的問題使用了可以運行多線程的好處的LAPACK函數,那麼安裝OpenBLAS可能會有所幫助。對於使用LAPACK 的任何R軟件包來說都是如此,因爲他們將使用與通過訪問相同的LAPACK安裝並且可以更改這些軟件包。

+0

從不認爲包裹「gcbd」的作者在這裏發表了評論。我在閱讀小貼士和包裝之前,我問了一個問題。我想我對此不甚瞭解。無論如何,非常感謝! :d –