如何在一个PBS作业提交中运行多个命令

sol*_*ora 3 parallel-processing supercomputers qsub pbs torque

我编写的代码只需1-4 cpus.但是当我在集群上提交作业时,我必须至少有一个节点,每个作业有16个核心.所以我想在每个节点上运行几个模拟我提交的每个作业.我想知道是否有办法在一个工作中并行提交模拟.

这是一个例子:我的代码需要4个cpus.我为一个节点提交作业,我希望节点运行我的代码的4个实例(每个实例都有不同的参数)来占用所有16​​个核心.

Jon*_*rsi 5

当然是; 通常这样的系统将有如何执行此操作的说明,如下所示.

如果您有(比方说)4x 4-cpu作业,您知道每个作业需要相同的时间,并且(比方说)您希望它们在4个不同的目录中运行(因此输出文件更容易跟踪),请使用shell&符号在后台运行它们然后等待所有后台任务完成:

(cd jobdir1; myexecutable argument1 argument2) &
(cd jobdir2; myexecutable argument1 argument2) &
(cd jobdir3; myexecutable argument1 argument2) &
(cd jobdir4; myexecutable argument1 argument2) &
wait
Run Code Online (Sandbox Code Playgroud)

(这里myexecutable argument1 argument2只是一个占位符,但是你通常运行你的程序;如果你使用mpiexec或类似的东西,那就像你通常使用它一样.如果你使用OpenMP,你可以在OMP_NUM_THREADS之前导出环境变量上面的第一行.

如果你有一个数字,不会所有需要的时间长度相同的任务,这是最简单的分配以及比(说)4个就业以上越来越像一个工具,让GNU并行推出的岗位需要,如在此回答.