2009-11-17 52 views
5

後,我注意到內部R軟件包在啓動時發佈了REvolution軟件包。它似乎是用於高性能矩陣計算的庫集合。顯然,它似乎確實有效。例如在矩陣轉置與革命:自從最新的Ubuntu發行版(karmic考拉)發佈R

> system.time(t(matrix(rnorm(10000000),ncol=1000))) 
    user system elapsed 
    1.280 0.150 1.556 

而且沒有革命:

> system.time(t(matrix(rnorm(10000000),ncol=1000))) 
    user system elapsed 
    1.320 0.170 1.725 

是使用的人呢?它真的有用嗎?它正在改進哪些特定類型的計算以及如何?有什麼缺點?

感謝:-)

+0

你似乎有兩次「沒有」的情況。 – 2009-11-17 14:58:42

回答

10

是的,在多核計算機上,實現BLAS的 - 由包revolution-mkl提供並由包r-revolution-revobase打開的英特爾MKL庫將爲線性代數問題並行工作,您應該看到與只使用libblas *包的基本案例。

但是,你上面的例子不是顯著,我經常做這樣的事情

mean(replicate(N, system.time(someStuffHere())["elapsed"]), trim=0.05) 

來計算截尾平均超過了許多重複的。

更重要的是,請注意,您的示例中包含的RNG的繪製時間爲 i)昂貴,ii)對所用方法不變,因此您應該在system.time()之外生成該方法。

除了MKL之外,revolution-r還引入了一些來自CRAN的可用於並行執行的REvolution創作的軟件包。

(聲明:我把這個共同的Ubuntu 9幫助REVO。10)

+0

謝謝,還有關於計時的提示:-) – 2009-11-17 16:55:29

+0

我在Ubuntu 13.04上安裝了革命性的r,並且基於基準2.5腳本,安裝後性能完全沒有變化。我想知道是否有問題。請看這個問題:http://askubuntu.com/questions/297968/how-to-make-revobase-package-work-in-r-3-0-1 – qed 2013-08-24 11:14:04

+0

現在我已經在R3上使用了基準腳本.0.1和R2.15,帶或不帶旋轉r,結果幾乎相同。有人可以證實這一點嗎? – qed 2013-08-24 11:31:30

4

有關更多信息,請參見本blog post從革命。 REvolution R 3.0應該從CRAN與R-2.9.2 100%兼容。 基本上,他們使用多線程,高性能線性代數庫和優化編譯器。 革命增強功能包括:優化以利用處理器高速緩存,矢量指令和多線程(Intel Math Kernel Library - MKL)和

  • 優化編譯器和運行時庫的優點

    • 高性能數學庫。

    REvolution網頁上有一些基準:REvolution R PerformanceSimple Benchmarks

    雖然他們已經下OSS許可證(foreachiteratorsdoSNOWdoMC)貢獻了幾個有趣的擴展到R社會,MKL擴展是專有的。

    就我個人而言,我已切換到(CRAN)R 2.10.0以擁有最新的R功能。

  • 4

    只是爲了重申Dirk提到的關於時機的問題 - 在你的情況下,幾乎所有的時間都在構建矩陣。看看會發生什麼(我的系統,在這裏我沒有革命的),當我抽出它的計時功能外:

    > system.time(t(matrix(rnorm(10000000),ncol=1000))) 
        user system elapsed 
        2.256 0.317 2.576 
    
    > mt <- matrix(rnorm(10000000),ncol=1000) 
    > system.time(t(mt)) 
        user system elapsed 
        0.137 0.070 0.204 
    

    換句話說,超過90%的時間都花在構建矩陣中,在10 %轉換它。