为工作站和 HPC 设置令人尴尬的并行代码的最佳方式

Best way to set up embarrassingly parallel code for workstation and HPC

提问人:js1 提问时间:11/1/2023 最后编辑:js1 更新时间:11/1/2023 访问量:40

问:

我正在寻找最通用/最简单的方法来运行具有更改输入的令人尴尬的并行代码。

  • 我希望最终的解决方案能够在工作站(没有可用的 PBS)上运行,而且只需进行最少的修改即可在 HPC(使用 PBS)的多个节点上运行。
  • 将有 100-1000 个实例要运行。假设运行时间最长可达 8 小时。
  • 代码的单个实例不需要通信
  • 单个 NUMA 节点可以而且应该运行多个实例,只要有足够的内存/CPU 来执行工作。大多数代码都是单线程的,这不容易更改为多线程。有一些线程部分调用了 BLAS。
  • 专用于实例的核心/内存应固定到 NUMA 节点
  • 可以并行进行的运行次数可能会受到可用内存的限制。 根据可以并行运行的内存限制数和 NUMA 本地中的核心数,将计算/分配每个实例的内核数。

代码本身是 fortran 的,采用命令行输入。如果需要,我可以修改代码。

我想知道解决上述问题的最佳方法是什么。我希望多功能性可以在没有 PBS 的单个/多个工作站上运行,也可以在有 PBS 的 HPC 上运行。

我心中的选项

  1. 滚动我自己的 sh 脚本(目前在工作站上使用这种方法)。我最初在脚本中使用 xargs,但命令字符串变得越来越复杂。我最终在每次运行中都回溯并在 while 循环中使用作业。它工作得很好。不过,我没有看到将来在多个节点上扩展它的简单方法。
  2. MPI。直接在 fortran 中实现还是使用某种 python 包装器?似乎每个 numa 节点会启动 4 个进程,并将每个进程绑定到处理元素。每个 numa 本地进程数和每个进程的线程数可以根据问题大小和 numa 配置来计算。随着计算的划分,MPI 将处理作业的运行。--map-by ppr:4:numa:pe=2
  3. 其他?
MPI HPC xargs GNU-并行

评论

0赞 Gilles Gouaillardet 11/1/2023
让您的生活更轻松:在您的工作站上安装 PBS,并提交作业阵列。
0赞 js1 11/2/2023
我想要/需要在工作站上没有 slurm/pbs 的情况下做到这一点
0赞 Gilles Gouaillardet 11/2/2023
所以你最终会重新发明轮子......
0赞 js1 11/3/2023
使用 MPI 主/从排列进行设置似乎有效,并且与我放在一起的 shell 脚本具有相似的结果。默认线程放置,MPI 正常工作...

答: 暂无答案