簡體   English   中英

HPC群集計算機上的python

[英]python on HPC cluster computer

我問了一個非常接近這個問題的問題,但沒有得到回答,從那時起,我希望我學會了更好地提出這個問題。

我很好奇如何在Cray XE6機器上連續運行許多作業。 通常,您可以使用ccmrun(用於串行作業)或aprun(而不是mpirun或mpiexec)來qsub事物。 我首先想使用Pool()函數,但是由於它不是基於SMP的硬件,因此只能使用32個處理器。 即使是像池這樣的mpi4py應用程序也無法正常工作,因為我沒有給主程序提供所有處理器。 如果我要說aprun -n 64 mpipool.py,我將運行該腳本64次,而如果我做類似aprun -n 1 -d 32 pool.py的事情,它將確實有效。

我已經看過https://wiki.python.org/moin/ParallelProcessing網站,並且想知道是否有人在集群計算機上運行多個串行作業,並且有經驗。 我確實編寫了一個mpi4py代碼,該代碼執行所有作業選擇時的等級均為0,然后將其分發給其他處理器。 它並不想在機器上發揮出色,因為我需要使用子進程來啟動大量的C代碼。 因此,最后一個警告是,它必須與子流程配合使用。

我想讓它查看所選節點的數量,然后基本上按照以下方式進行操作:

ccmrun jobscheduler.py&ccmrun jobrunner.py 63&#鑒於我以64個處理器開始了這項工作。 我可能需要在這里進行bash循環,但這沒問題。

一旦開始,我希望他們能夠彼此通信,但是如果沒有MPI,我不確定這樣做的有效方法。 如果有人能讓我走上正確的道路,我將不勝感激。 可能會進行腌制轉儲並將其鎖定,並在工作運行者將其撿起時將其刪除。 可能有一種非常簡單的方法來執行此操作,但是我對此很陌生。

謝謝!

我對Cray機器一無所知,但是無論如何我都會刺中。 我注意到您提到了qsub,這使我認為系統正在使用PBS或Torque。 兩者似乎都支持Job Array,這可能與您要查找的內容相似。

作業陣列將使隊列系統負責作業管理。 將為每個子作業分配一個數組ID,該數組ID超出您指定的范圍,並且將分配給您使用-l請求的任何資源。 在Torque中,“#PBS -l個節點= 1”和“ #PBS -t 1-64”將創建64個子作業,索引從1到64分別分配一個節點。 手冊頁和Google將是一個很好的資源,從我所見,Torque和PBS在語法上有所不同。 如果那行不通,您可以考慮在一個較大的工作中使用pbsdsh。

另外,我想提及的是,互聯網上陌生人的建議只會帶您走遠。 您的本地管理員可能有限制或調度策略,可能會限制您的選擇。 您也許還可以從管理員那里獲得一些建議,以了解其他可以解決問題的可靠方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM