簡體   English   中英

創建一個同事的Windows 7 PC集群,以便在R中進行並行處理?

[英]Create a cluster of co-workers' Windows 7 PCs for parallel processing in R?

我正在運行R中的termstrc收益率曲線分析包,其中包含5個不同國家的10年每日債券價格數據。 這是高度計算密集型的,在標准的lapply上每個國家需要3200秒,如果我在2009 i7 mac上使用foreach和%dopar%(使用doSNOW),使用所有4個內核(8個超線程)我將其歸結為850秒 每次我添加一個國家時,我都需要重新運行這個分析(計算國家間的差價),我有19個國家可以去,未來會有更多的信貸收益率曲線。 所花費的時間開始看起來像一個主要問題。 順便說一句,有問題的termstrc分析函數在R中訪問,但用C語言編寫。

現在,我們是一個12人的小公司(預算有限),全部配備8GB內存,i7個電腦,其中至少有一半用於平凡的文字處理/電子郵件/瀏覽風格任務,即使用5%最大的表現。 它們都使用千兆位(但不是10千兆位)以太網聯網。

我可以使用MPI對其中一些未充分利用的PC進行集群,並對它們進行R分析嗎? 網絡會受到影響嗎? 收益率曲線分析函數的每次迭代大約需要1.2秒,因此我假設如果並行處理的粒度是將整個函數迭代傳遞給每個集群節點,那么與千兆位以太網滯后相比,1.2秒應該是非常大的?

可以這樣做嗎? 怎么樣? 那會對我的同事產生什么影響呢。 我在為他們的機器征稅時能否繼續閱讀他們的電子郵件?

我注意到Open MPI似乎不再支持Windows了,而MPICH似乎也是如此。 如果有的話,你會用哪個?

也許在每台PC上運行一個Ubuntu虛擬機?

是的你可以。 有很多方法。 其中一個最簡單的方法是使用redis作為后端(就像在Ubuntu機器上調用sudo apt-get install redis-server一樣簡單;有傳言說你也可以在windows機器上安裝redis后端)。

通過使用doRedis包,您可以非常輕松地在redis中對任務隊列上的作業進行排隊,然后使用一個,兩個......空閑工作程序來查詢隊列。 最重要的是,您可以輕松地混合操作系統,因此,您的同事的Windows機器符合條件。 此外,您可以根據需要使用一個,兩個,三個......客戶端,並按比例放大或縮小。 隊列不知道或不關心,它只是提供工作。

最重要的是, doRedis中的小插圖提供了Linux和Windows客戶端組合的實例,以使引導示例更快。

也許不是你正在尋找的答案,但是 - 這是其中一種情況,其中一種替代方案要好得多,以至於很難忽視。

對於這些類型的計算問題,AWS集群的成本非常低 (我強調)。 您只需支付使用的費用。 我可以向您保證,如果不花時間嘗試將12台Windows機器轉換為集群,您將節省資金(至少是機會成本)。 為了您的目的,您甚至可以免費這樣做。 (IIRC,他們仍然提供群集上的免費計算時間)

參考文獻:

其中一些實例非常強大,您可能甚至不需要弄清楚如何在群集上設置您的工作(根據您當前的描述)。 從參考資料中可以看出,成本非常低,每小時計算時間為1-4美元。

那么OpenCL呢?

這將需要重寫C代碼,但允許潛在的大加速。 GPU具有強大的計算能力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM