如何提取 PBS 指令中指定的資源值,以便將它們對應到其他環境變數中?

如何提取 PBS 指令中指定的資源值,以便將它們對應到其他環境變數中?

當試圖在我的主機計算叢集中找到一個可以更方便地管理高斯量子化學計算的腳本時,出現了這個問題。這使用者手冊我的主人給出以下內容:

Gaussian 09 提供了另一種將處理器數量、內存量和要使用的磁碟空間的值傳遞給程式的方法。您可能會發現使用高斯環境變數 $GAUSS_PDEF、$GAUSS_MDEF 和 $GAUSS_RDEF 更有吸引力,而不是在輸入檔案中指定 %mem、%nprocshared 和 Maxdisk。使用這些變數可以將 ncpus、mem 和 jobfs 的 PBS 作業值轉換為 Gaussian 09 可讀的環境變數。該腳本為您執行此轉換並啟動程序,使其了解 PBS 設定。腳本用法的文法很簡單:

不幸的是,該腳本似乎不再存在於集群中(並且我無法完全驗證這一點,因為作為用戶,/root 中不允許訪問,即使我實際上可以訪問文件夾 / 並檢查 /apps 和 /modules存儲軟體和環境模組。

這意味著,我必須根據這些資訊嘗試編寫自己的腳本來為我完成相同的任務。主機使用的典型 PBS 如下所示:

#!/bin/bash
#PBS -l walltime=20:00:00
#PBS -l ncpus=4
#PBS -l mem=4GB
#PBS -l jobfs=100GB
#PBS -l software=g09
#PBS -l wd

module load gaussian/g09e01
g09 < inputdeck > outputfile 2>&1

因此,正如在PBS 專業使用者指南,所有帶有 -l 的內容都是要指派給作業的資源。

然後,我嘗試找到儲存資源 mem、ncpus 和 jobfs 值的環境變量,以便我可以匯出$(some gaussian environment variable)=$(some PBS environment variable correspond to the resources).然而,儲存資源的唯一 PBS 環境變數是 PBS_NCPUS,因此該策略似乎不起作用

那麼,如何從 PBS 指令中提取每種資源類型的值,以便將它們對應到高斯環境變數?

相關內容