2013-09-29 39 views
1

我有一個使用MPI的並行代碼。使用此代碼正確的方法是從源代碼編譯在PC /羣集,然後根據運行:將mpiexec/mpirun與靜態二進制文件一起運輸

mpiexec -n X ./application -options 

遺憾的是有些人利用這個代碼* nix的挑戰,誰找到源代碼構建一個有點令人生畏(不要問爲什麼)。這些用戶只能在自己的臺式機/筆記本電腦上使用該代碼。

對於這樣的用戶,我只需編譯一個靜態二進制文件(在一個足夠老的操作系統上運行一個足夠老的glibc,它可以在運行Linux的大多數PC上運行)。然後,用戶可以運行的代碼如下:

./application -options 

所以現在我的問題是,我如何才能發貨程序mpiexec /的mpirun我的靜態二進制文件一起,以便用戶可以這樣做:

./mpiexec -n 2 ./application -options 

這樣他們也可以利用桌面上的多個核心。直到現在,我一直告訴他們做正確的事情,即安裝MPI並從源代碼編譯我的代碼。

做一些測試中,我發現,如果我hydra_pmi_proxy一起編譯水螅和船舶mpiexec.hydra然後我可以按以下方式運行代碼:

./mpiexec.hydra -n 2 ./application -options 

但我不知道這是正確的做法?這會造成任何問題嗎?我正在考慮爲Windoze二進制文件(在Cygwin中運行)做同樣的事情。

另一種選擇是VBox映像,其中包含所有預構建的內容,但是隨後下載大文件成爲問題。

回答

0

既然您使用的是Hydra,我會假設您使用MPICH或基於它的東西。

僅運送完整安裝的一小部分的問題是功能可能會丟失。您可以假設不願意自行設置MPI的用戶只會使用某些功能,並且如果他們需要更多,只需告訴他們正確安裝即可。

雖然有更多的關注情況需要考慮。如果他們已經安裝了MPI,而且這不是您要發貨的那個,那麼您需要確定您的是第一個找到的。在Windows中,只需將您的二進制文件和庫放在同一個文件夾中,Windows就會首先找到它們。 Linux有點棘手,但你可以操作PATH和LD_LIBRARY_PATH來讓你的第一個。另一種選擇是將mpirun調用包裝在腳本中。這樣可以更容易地設置您希望的路徑,更高級的用戶可以忽略它。

相關問題