2012-04-18 63 views
2

你知道是否有計劃在R中爲所有包引入並行編程? 我知道一些發展,如R-革命和並行編程包,但他們似乎有專門的功能,取代最流行的功能(線性編程等)。然而,關於R的其中一個重要的事情是大量的專業化軟件包,它們每天都在爲之提供支持,並且使得複雜和耗時的分析非常容易運行。其中許多使用非常流行的函數,如廣義線性模型,但也使用結果進行額外的計算和比較,最後對輸出進行分類。據我所知,你需要定義一個函數的哪些部分可以在並行編程中運行,所以這可能是爲什麼大多數專用R包沒有這個功能,並且除非編輯代碼才能擁有它。所有R包的並行編程

是否有任何計劃(或任何軟件包)能夠使所有最流行的R函數在並行處理中運行,以便所有不太常用的包含這些函數的函數可以在並行處理中運行?例如,difR軟件包的大部分功能都使用glm函數;如果glm軟件包能夠在所有多處理器機器上並行處理(或重新編寫,然後在新的R版本中發佈)運行,那麼就不需要重新編寫difR軟件包,這樣就可以運行一些在Windows PC上進行並行編程的最繁瑣程序。

回答

5

我完全同意保羅的回答。

此外,一個通用的並行化系統需要一些非平凡的校準,即使對於那些可以很容易並行化的函數:如果你有一個提供並行計算的幾個函數的調用堆棧(例如,你正在引導一些模型擬合,模型擬合可能已經提供了並行化,低層次線性代數可以隱式並行)?您需要估計(或手動選擇)應在哪個級別進行顯式並行化。另外,你可能有隱含的並行化,所以你需要在這些之間進行權衡。然而,隱式地在R中並行化計算有一種特別簡單和普遍的方式:通過使用優化的BLAS,線性代數可以被並行化並且顯着加速。使用這個可以(取決於你的系統)就像告訴你的軟件包管理器安裝優化的BLAS一樣簡單,R將使用它。一旦鏈接到R,所有使用基本線性代數函數(如%*%,crossprod,solve等)的包都將獲利。

參見例如DirkEddelbüttel的gcbd軟件包及其小插件,並討論如何使用GotoBLAS2/OpenBLAS。

+0

非常感興趣的建議。這非常有幫助。 – 2012-04-19 07:34:51

+0

不客氣。 – cbeleites 2012-04-19 08:40:53

2

如何並行化某個問題通常是不平凡的。因此,在每種情況下都必須具體實施,在這種情況下,對於每個R包。所以,我不認爲R中的並行處理的一般實現將會產生,甚至是可能的。