2014-08-28 28 views
2

在我們公司,我們使用.NET開發的自己的軟件運行復雜模擬。這些仿真非常適合並行計算,我們目前大量使用.NET本身的各種多線程功能。即便如此,模擬通常需要數小時或數天。在本地網絡上使用.NET設置分佈式計算網格

我們希望探索通過本地高性能(24核)工作站網絡來分配計算以獲取更多CPU能力的潛力。但是我們在這方面沒有經驗。

在Google上搜索可以發現幾種基於MPI的選項,如Pure MPI,MPI.NET以及一些商業軟件,如Frontier。

我們應該考慮哪種解決方案適合.NET環境,並且相對容易設置?

謝謝!

回答

0

多線程!=網格計算,所以您將需要重寫應用程序的某些部分,而不管您最終選擇什麼。

我不知道你的網絡基礎設施,但它聽起來像我想,就像你想使用普通的桌面工作站來運行分發代碼。我不會爲此使用MPI。 MPI相當於網絡支持高帶寬和低延遲的集羣和超級計算機。這些不是傳統辦公網絡的屬性(除非我瞭解錯誤)。

接下來要處理的事情是用戶不應該在計算機上執行關機。沒有網格計算平臺(包括MPI)處理這些類型的問題,因爲它通常運行在幾乎沒有故障並且全天候運行的服務器硬件上。

我不認爲有一個簡單和便宜的解決方案。你可以在每臺機器上運行一個服務,它可以使用預定義的參數從DLL中執行代碼併發送響應。這些程序集可以從一些windowsshare下載。但是你想要有這樣的分配真正的巨大工作。如果應用程序只運行一分鐘或更短時間,您幾乎不會獲得任何改進。

最後,你還需要一個服務來查找那些在線或不在線的服務,某種內存數據庫,其中每個服務都可以寫入IP地址並且它在線,以便客戶端知道誰他們可以分發工作。這可以通過使用RavenDB(正如你所說的你正在使用.Net),Redis或實際上爲這些問題編寫的應用程序Zookeeeper來完成的。