2014-10-06 221 views
0

我通常在大學的集羣上處理數據。以前完成的大部分作業都基於並行批處理外殼(將作業分成幾個批次,然後並行提交)。這個外殼的一個例子如下所示:在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保留更多的處理器。它會影響這個規則嗎?我擔心,我會永遠等待...

+1

當然,這是您的集羣管理員的問題嗎?確切的解決方案完全依賴於你的集羣運行的中間件,而這裏沒有人知道這是什麼。 – talonmies 2014-10-06 07:41:31

+0

好吧,問題標題中的「lsf」和「lsf」標籤表明所述中間件是Platform LSF。 ;-) – janneb 2014-10-06 07:51:47

+0

你是對的。我剛剛在這裏發現比大學的IT支持更有用。對於大學來說,如果問題與我自己的編碼知識更相關,通常缺乏有用的迴應。也許他們每天都得到這麼多票。這就是爲什麼我先在這裏嘗試看看我是否有使用mpi的任何明顯的編碼錯誤。或者,也許大學之間的集羣有點類似?無論如何,你的評論是正確的。我會聯繫他們。 – Kenny 2014-10-06 07:52:38

回答

0

那麼,增加「#BSUB -n」是你需要做什麼。該選項告訴您保留多少執行「插槽」。所以,如果你想與20級運行MPI工作,你需要

#BSUB -n 20 

IIRC所必需的請求的執行槽不需要在同一節點上進行分配,LSF將分配從儘可能多的節點插槽得到滿足。但是自從我使用LSF以來,我已經有一段時間了,而且我目前無法訪問使用它的系統,所以我可能會錯誤(並且可能取決於本地羣集LSF配置)。

+0

謝謝。我可以試試。但我的經驗是,我最多隻能保留16個處理器來完成單個任務。這是基於我簡單的並行批處理體驗。它是否也影響mpi? – Kenny 2014-10-06 07:58:17

+0

我試過「-n 8」,它工作。然後我切換到20.正如我所說,似乎永遠都在等待。這讓我感到困惑,因爲我不需要連續內存,並且對於單處理器工作,我至少可以同時運行512個,爲什麼mpi不能保留20 ... – Kenny 2014-10-06 08:07:41

+0

'-R'範圍[ptile =#slots]「'選項可以用來指定插槽的分組。 – 2014-10-06 08:08:12

相關問題