2016-07-31 90 views
0

我正在使用R的randomForestSRCVersion: 2.2.0 Date: 2016-05-17,在其描述中特別指出The package runs in both serial and parallel (OpenMP),我確定它已加載,因爲sessionInfo()說:randomForestSRC_2.2.0。我遵循了安裝openMP的版本說明,並從Ishwaran's site下載。爲什麼openmp並行加速我的randomForestSRC?

然而,我試圖加快8個樹一個微不足道的森林的建設,它不是超速在所有:(

編號:

options(rf.cores=1, mc.cores=1) 
system.time(my.rfsrc <- rfsrc(Surv(score_years_before_label, status) ~ ., data = m, nsplit=10, ntree = 8, na.action = "na.impute", tree.err=TRUE, importance = TRUE)) 
user system elapsed 
359.42 0.06 359.58 

並行:

print(detectCores()) 
[1] 8 
options(rf.cores=8, mc.cores=8) 
system.time(my.rfsrc <- rfsrc(Surv(score_years_before_label, status) ~ ., data = m, nsplit=10, ntree = 8, na.action = "na.impute", tree.err=TRUE, importance = TRUE)) 
user system elapsed 
378.07 0.05 314.67 

我使用的是Windows 10 Pro,64位,而我的機器有4個內核和8個邏輯處理器,而且我的數據並不那麼大:

print(nrow(m)) 
23070 
print(ncol(m)) 
67 

我在做什麼錯? 謝謝!

+0

您可以使用操作系統的監控工具檢查這兩個示例中實際使用的內核數量? – Spacedman

+0

@Spacedman - 我檢查了任務管理器,在兩種情況下,它看起來像所有8個處理器都在做某些事情,這佔用了他們大約15%的時間 - 沒有一個工作非常努力,沒有一個完全空閒 – ihadanny

回答

2

的確,該軟件包確實支持串行和OpenMP並行處理。但是,默認的CRAN構建協議和二進制文件不能啓用該功能。請參閱文檔的第二頁,標題爲「OpenMP並行處理 - 安裝」一節,瞭解有關您的平臺的更多詳細信息。

+0

謝謝,但我很確定我遵循了這些說明 - 我使用的軟件包是http://www.ccs.miami.edu/~hishwaran/rfsrc.html中的軟件包 - 它是randomForestSRC_2.2.0.zip,大小爲1.30 MB(1,365,819字節)。我錯過了其他的東西嗎? (並感謝您的快速支持!:) – ihadanny

+1

針對Windows發佈的二進制文件是使用Windows 8.1 Pro構建的。不幸的是,我們還沒有對它進行測試或者使用Windows 10構建軟件包。在任何平臺上(總是)更好的方式是使用發佈的路線從源代碼編譯軟件包。先決條件是您的系統上可以使用R Windows工具集。在Windows上從源代碼編譯CRAN包比其他平臺稍微複雜一些。我會查看https://cran.r-project.org/bin/windows/Rtools/以獲取更多關於如何執行此操作的信息。 –