Gridengine

Qsub 到具有多於 n 個可用核心的任何節點

  • October 22, 2018

我有一個使用 MPI 並行化的程序。它認為它能夠在我們基於 (CentOS 6.6) 的 HPC 網格上的多個節點上執行,而實際上它只能在同一計算節點的多個核心上成功執行。

例如,如果我qsub向網格請求 20 個核心的工作,而 Grid Engine 決定將其拆分到兩個不同的節點上,則程序將失敗。但是,如果有一個具有 20 個可用核心的節點,並且 Grid Engine 將其全部發送到該節點,則程序會成功執行。qsub 腳本包含#$ -pe mpi 20選擇核數的命令。

所以目前,我qstat -f -u "*"手動辨識具有 20 個可用核心的計算節點,並送出給該節點qsub -q general.q@node-X-X

我正在尋找一種方法來告訴 Grid Engine 等待並且僅將作業送出到具有所需數量的可用核心的單個計算節點。這將使我能夠自動化我的工作送出。

我正在考慮編寫一個 bash 腳本來解析qstat -f -u "*"命令,但必須有一個更優雅的解決方案。我查看了 qsub 手冊,但找不到合適的標誌或命令行參數。

我目前無法修改程序本身,而且我不是系統管理員。

以下是有關我可用的不同軟體版本的一些資訊:

MPI / 網格引擎資訊:

> ompi_info | grep gridengine
MCA ras: gridengine (MCA v2.0, API v2.0, Component v1.6.2)

網格引擎版本為:OGS/GE 2011.11p1

如果您使用-pe smp 20而不是-pe mpi 20使用 SMP(“共享記憶體並行”)環境而不是 MPI。

SMP 是一種更簡單的並行方法,在單台電腦上執行,跨執行緒共享本地系統記憶體。因此,它將所有請求的插槽放在單個節點上(如果可用),而不是將它們拆分到多個計算節點上。

對我來說,這似乎已經解決了這個問題。

要讓 Gridengine 在單個節點上安排您的 20 核作業,您必須創建一個新的並行環境或調整您正在使用的環境。您需要的設置是

allocation_rule    $pe_slots

來自man sge_pe

如果使用特殊分母 $pe_slots,則必須在單個主機上分配使用 qsub(1) -pe 開關指定的全部程序。

不要忘記將新的 PE 附加到您的隊列中。

要解決您的原始問題,在多個節點上執行 MPI 作業,您可以打開第二個問題,其中包含更多詳細資訊。

引用自:https://unix.stackexchange.com/questions/365124