2013-05-01 88 views
1

我目前正在運行一些計算密集型模擬,但它們需要很長時間才能完成。我已經將工作負載分配到了處理器中的所有可用物理內核中。我想知道的是如何進一步分解工作負載並將其分配給其他計算機。我打算購買一對至強服務器,並將它們用於數字處理。使用多臺計算機進行數字運算

的一個大問題,我已經是我目前在運行Visual Studio(按CtrlF5)的有兩種方法,我正在不斷地作出小的修改中的程序。

有關如何將工作負載分配給其他計算機的任何建議/是否仍可以使用VS運行程序,或者每次需要運行它時都需要創建一個* .exe文件?

回答

1

這取決於你正在解決的問題。

如果SETI @ Home等易於並行化,則可以使用map/reduce和Hadoop。

如果不像線性代數那樣,可以使用類似MPI的東西。

+0

我相信它很容易並行化。工作量可以分成不連續的塊。有人建議WCF,但是我相信我仍然有問題,我需要創建一個* .exe,安裝它之前,我可以運行它在每臺服務器上。我需要對這兩種方法進行的任何更改都需要一個新的* .exe,並將它們重新安裝到服務器上。 (這假設我沒有missunderstood的東西) – 2013-05-01 14:32:26

+1

我想看看Hadoop和HDInsight:http://cloud.dzone.com/articles/hdinsight-writing-hadoop-map – duffymo 2013-05-01 14:33:18

+0

我檢查出來,謝謝你的鏈接! – 2013-05-01 14:37:37

0

是不是你在這個聲明中問題的癥結所在「我遇到的一個大問題是,我正在Visual Studio中運行該程序(Ctrl F5),因爲有兩種方法可以不斷進行微小的更改。 ?

它是「一個大問題」,因爲如果你分發了,那麼你做不到修改所有節點上的代碼,所以你考慮爲你分配它的東西嗎?如果是這種情況,那麼我假設你已經知道如何分割算法或數據,以節點可以承擔小部分工作的方式。

如果是這種情況 - 對不起,如果我誤解了 - 然後將您正在「不斷進行小改動」的部分外化爲一個文件或以某種簡單或更精細的形式編碼的數據庫,這取決於您正在更改的內容,不需要讓節點不斷變化。在所有節點上部署代碼,將它們連接到包含不同位的數據庫或文件,並享受您的新法拉利!

+0

我通常開始模擬。一旦完成,通常是幾個小時,我修改了幾個方法,然後重新運行它。或者有時候我會意識到,我搞砸了,停下來,做一些快速的改變,然後重新運行它。 – 2013-05-01 14:37:11

0

您可以使用WMI service在遠程計算機上啓動您的進程。您可以將您的exe文件構建到遠程計算機可見的共享目錄中,然後使用遠程計算機上的WMI啓動該exe文件。

有很多的例子在那裏要做到這一點,而是想說明,這不承擔任何身份驗證併發症簡單的方法是使用.vbs腳本文件:

strComputer = "acomputer" 
strCommandLine = "calc.exe" 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set objProcess = objWMIService.Get("Win32_Process") 

intReturnValue = objProcess.Create(strCommandLine, , , intPID) 
WScript.Echo "Process ID: " & intPID 

您還可以使用PsExec from SysInternals處理所有這些工作的細節。

在Visual Studio中構建exe文件後,您可以在本地機器上運行它以確保它做到了您想要的,然後當您準備在遠程系統上啓動它時,可以執行類似於高於VBS在遠程系統上啓動EXE。

您仍然需要提供一些機制來分配工作量,以便每個客戶都知道應該處理的問題的哪一部分。您可以在用於啓動遠程應用程序的命令行中,在exe目錄中的配置文件中,在數據庫表中提供此信息,或使用客戶端連接回的單獨的命令和控制類型服務器(儘管採用這種方法,你很快就會走上舞臺,學習如何使用現有的解決方案,而不是自己動手)。

您可能還需要包含某種遠程'kill switch'。您可以使用PsKill from SysInternals,或者如果您想要更優雅的關機,則可以使用與exe相同的目錄中存在的特定文件這樣的簡單操作作爲遠程進程關閉標誌。

您也可以考慮將CSScript支持添加到客戶端,以便遠程客戶端程序是靜態的並加載並編譯CSScript文件來完成這項工作。如果您在經常重新部署和重新啓動客戶端程序時遇到某種困難,或者您需要它們稍有不同(例如,可能會編寫一個程序爲每個客戶端生成單獨的腳本文件),這可能會非常有用。

相關問題