5

我写了一个只需要 1-4 cpu 的代码。但是当我在集群上提交作业时,我必须至少占用一个节点,每个作业有 16 个核心。所以我想在我提交的每个作业的每个节点上运行几个模拟。我想知道是否有一种方法可以在一项工作中并行提交模拟。

这是一个示例:我的代码需要 4 个 CPU。我为一个节点提交了一个作业,我希望该节点运行我的代码的 4 个实例(每个实例具有不同的参数)以占用所有 16 个内核。

4

1 回答 1

8

是的当然; 通常,此类系统将提供有关如何执行此操作的说明,例如这些

如果您有(例如)4 个 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

(wheremyexecutable argument1 argument2只是一个占位符,用于您通常运行程序;如果您使用mpiexec或类似的东西,就像您通常使用它一样进入那里。如果您使用的是 OpenMP,您可以OMP_NUM_THREADS在上面的第一行。

如果您有许多任务不会花费相同的时间,那么最简单的方法是分配比上面的(比方说)4 个更多的工作,并让像gnu这样的工具在必要时并行启动这些工作,如本文所述回答

于 2012-11-08T06:09:01.930 回答