我通常在大學的集羣上處理數據。以前完成的大部分作業都基於並行批處理外殼(將作業分成幾個批次,然後並行提交)。這個外殼的一個例子如下所示:在lsf集羣上提交mpi作業
#! /bin/bash
#BSUB -J model_0001
#BSUB -o z_output_model_0001.o
#BSUB -n 8
#BSUB -e z_output_model_0001.e
#BSUB -q general
#BSUB -W 5:00
#BSUB -B
#BSUB -N
some command
這一次,我測試了一些MPI作業(基於mpi4py)。該代碼已經在我的筆記本電腦上進行了單個任務的測試(1個任務使用4個處理器運行)。現在我需要在集羣上提交多任務(30)作業(使用8個處理器運行1個任務)。我的設計是這樣的:準備上面30個類似的shell文件。每個shell填充命令是我的mpi命令(如「mpiexec -n 8 mycode.py args」)。並且每個外殼保留8個處理器。
我提交的作業。但我不確定自己的行爲是否正確。它正在運行,但我不確定它是否基於mpi運行。我該如何檢查?這裏有2個問題:
1)對於普通的並行作業,通常是有極限的號碼,我可以保留單任務 - 16上方16,我從來沒有成功過。如果我使用mpi,我可以保留更多嗎?因爲mpi不同。基本上我不需要連續記憶。
2)我覺得這是在集羣中的優先級規則。對於正常的並行作業,通常當我爲一個任務(比如說10個任務和每個任務16個處理器)預留更多的處理器時,它需要比爲單個任務保留更少的處理器少得多的等待時間(比如說將每個任務分成8個子任務任務(總共80個子任務)和每個子任務2個處理器)。如果我可以爲mpi保留更多的處理器。它會影響這個規則嗎?我擔心,我會永遠等待...
當然,這是您的集羣管理員的問題嗎?確切的解決方案完全依賴於你的集羣運行的中間件,而這裏沒有人知道這是什麼。 – talonmies 2014-10-06 07:41:31
好吧,問題標題中的「lsf」和「lsf」標籤表明所述中間件是Platform LSF。 ;-) – janneb 2014-10-06 07:51:47
你是對的。我剛剛在這裏發現比大學的IT支持更有用。對於大學來說,如果問題與我自己的編碼知識更相關,通常缺乏有用的迴應。也許他們每天都得到這麼多票。這就是爲什麼我先在這裏嘗試看看我是否有使用mpi的任何明顯的編碼錯誤。或者,也許大學之間的集羣有點類似?無論如何,你的評論是正確的。我會聯繫他們。 – Kenny 2014-10-06 07:52:38