在啟動將在完整節點上執行的作業之前,為 SGE 建立一個假作業以填入所有節點

在啟動將在完整節點上執行的作業之前,為 SGE 建立一個假作業以填入所有節點

在SGE上提交作業以在完整節點上運行的問題之前已在本論壇中解決。已經提出了幾種解決方案,其中之一是配置 SGE 以允許使用選項 -l excl=TRUE,另一種解決方案是向 SGE 詢問硬記憶體或負載限制。

我的碩士論文使用的是我大學的集群,並行環境openmpi配置的是填充策略。通常,叢集的節點每個包含 16 或 20 個核心,問題是某些使用者不是使用 16(或 20)倍數的核心啟動計算,而是使用任意數量的核心啟動作業。因此,當我使用 -pe openmpi 16 啟動作業時,有時 SGE 會在 3 個節點(例如 6 + 1 + 10)上保留處理器,這使得計算非常慢。

我要求管理員將叢集配置為允許 -l excl=TRUE,但他拒絕在進行測試之前更改配置(我不知道需要多長時間)。

現在我有一個新想法,可以讓我獲得與 (-l excl=TRUE) 類似的結果,但無需更改叢集:

  1. 編寫一個腳本來掃描佇列並估計必須向 SGE 請求的核心數量,以便他填充所有正在運行的節點並只允許完全空閒的節點。
  2. 使用計算出的核心數量啟動一個虛假作業,該作業將等待一定的時間。
  3. 啟動我真正的工作(例如-pe openmpi 2*16=32)。
  4. 刪除虛假作業以允許其他使用者使用其核心

有人可以給我提供此類程式碼的範例嗎?

答案1

qsub -l cpu=0使用(或)啟動工作cpu=0.1非常適合我。

相關內容