2015-02-23 44 views
1

我試圖在使用MPI的集羣上運行作業(python代碼)。每個節點上有63GB的可用內存。 當我在一個節點上運行它,我指定與(只有相關的參數在這裏列出)PBS參數:PBS:在兩個節點上的作業使用的內存只有一個

#PBS -l mem=60GB 
#PBS -l nodes=node01.cluster:ppn=32 
time mpiexec -n 32 python code.py 

比工作得很好。

由於PBS手冊頁說:mem是每整個作業的記憶裏,參數試圖在兩個節點上運行它時,是

#PBS -l mem=120GB 
#PBS -l nodes=node01.cluster:ppn=32+node02.cluster:ppn=32 
time mpiexec -n 64 python code.py 

這不起作用(qsub: Job exceeds queue resource limits MSG=cannot satisfy queue max mem requirement)。即使我設置了mem=70GB(例如系統需要更多內存),它也會失敗。 如果我設置mem=60GB試圖用兩個節點的時候,我得到

=>> PBS: job killed: mem job total xx kb exceeded limit yy kb. 

pmem嘗試它,以及(這是pmem=1875MB),但沒有成功。

我的問題是:如何使用整個120GB的內存?

回答

2

轉矩/ PBS忽略mem資源,除非該作業使用單個節點(參見here):

由作業所使用的物理存儲器最大量。 (忽略在Darwin,Digital Unix的,免費BSD,HPUX 11,IRIX,NetBSD的,和SunOS。Linux上也將被忽略,如果節點的數目不爲1 AIX和HPUX 10.未實施)

您應該使用pmem資源,該資源會限制每個作業進程的內存。使用ppn=32時,您應該將pmem設置爲1920MB,以便獲得每個節點60 GB的容量。在這種情況下,您應該介意pmem不允許在節點上運行的進程之間靈活地分配內存,這與mem的做法相同(因爲後者被計算爲聚合值,而pmem單獨應用於每個進程)。

相關問題