如何提取 PBS 指令中指定的资源值,以便将它们映射到其他环境变量中?

如何提取 PBS 指令中指定的资源值,以便将它们映射到其他环境变量中?

当试图在我的主机计算集群中找到一个可以更方便地管理高斯量子化学计算的脚本时,出现了这个问题。这用户手册我的主人给出以下内容:

Gaussian 09 提供了另一种将处理器数量、内存量和要使用的磁盘空间的值传递给程序的方法。您可能会发现使用高斯环境变量 $GAUSS_PDEF、$GAUSS_MDEF 和 $GAUSS_RDEF 更有吸引力,而不是在输入文件中指定 %mem、%nprocshared 和 Maxdisk。使用这些变量可以将 ncpus、mem 和 jobfs 的 PBS 作业值转换为 Gaussian 09 可读的环境变量。我们建议您尝试使用 bash 脚本“g09.sh”而不是命令中的“g09” PBS 脚本的行。该脚本为您执行此转换并启动程序,使其了解 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 指令中提取每种资源类型的值,以便将它们映射到高斯环境变量?

相关内容