我正在寻找最通用/最简单的方法来运行具有更改输入的令人尴尬的并行代码。
代码本身是 fortran 并接受命令行输入。如果需要的话我可以修改代码。
我想知道解决上述问题的最佳方法是什么。我希望多功能性能够在没有 PBS 的单个/多个工作站上运行,以及在带有 PBS 的 HPC 上运行。
我心中的选择
--map-by ppr:4:numa:pe=2
将为每个 numa 节点启动 4 个进程,并将每个进程绑定到处理元素。每个 numa 本地的进程数和每个进程的线程数可以根据问题大小和 numa 配置来计算。通过分配计算,MPI 将处理繁重的工作。为工作站和高性能计算 (HPC) 环境设置极其并行的代码涉及不同的考虑因素。 “令人尴尬的并行”是指可以轻松地划分为多个并行任务的问题,这些任务之间不需要太多的沟通或协调。以下是为工作站和 HPC 进行设置的步骤:
工作站设置:
并行化代码:修改代码以将工作负载分解为可以并行执行的独立任务。 选择并行化方法:考虑使用您首选编程语言中的多处理库(例如 Python 的多处理模块)或并行计算框架(例如 OpenMP for C/C++)。 优化资源使用:确保您的工作站有足够的资源(核心、内存)来有效处理并行任务。您可能需要配置代码以有效管理可用资源。 测试和调试:在工作站上测试并行化代码,以确保其正常运行并按预期扩展。调试任何问题。 HPC 设置:
HPC 集群访问:访问 HPC 系统或集群。这可能涉及获取权限、帐户和了解可用资源。 作业提交系统:了解HPC的作业提交系统(例如Slurm、PBS等)。了解如何向集群提交并行作业。 HPC 代码修改:您的代码可能需要进一步修改以适应 HPC 环境,特别是在集群使用不同的硬件、编译器或库的情况下。 扩展注意事项:在 HPC 上使用较小的工作负载测试您的代码,以确保其正确扩展。注意资源分配、并行性和负载平衡。 作业提交脚本:创建作业提交脚本,指定资源要求、并行化设置和任何其他必要的配置。 提交作业:使用作业提交脚本将作业提交到 HPC 系统。 监控和优化:监控 HPC 上作业的性能,并根据需要优化代码和作业参数以提高效率。 两种环境的一般提示:
日志记录和监控:在代码中实施日志记录和监控机制以跟踪进度和潜在错误。 数据管理:确保正确的数据处理,以有效地分发输入和收集输出。 文档:记录您的代码以及工作站和 HPC 的并行化过程,以便将来更轻松地参考和复制。 请记住,该过程可能会有所不同,具体取决于您使用的特定工具、语言和框架,以及 HPC 集群的配置和作业提交策略。请务必检查 HPC 系统管理员提供的文档和指南,以了解最佳实践和任何特定要求。