news 2026/5/7 0:35:16

PMIx标准化进程管理接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PMIx标准化进程管理接口

文章目录

    • 一、PMIx 的核心作用
    • 二、PMIx 与 Slurm 的集成
      • 1. Slurm 配置
      • 2. MPI 实现通过 PMIx 与 Slurm 交互
    • 三、使用示例:通过 PMIx API 获取作业信息(C 程序)
    • 四、PMIx + Slurm 的典型应用场景
    • 五、注意事项
    • 六、参考资源

PMIx(Process Management Interface for Exascale)是一个为大规模并行计算(特别是 Exascale 级别)设计的标准化进程管理接口,旨在为作业调度器(如 Slurm、PBS、LSF)与运行时系统(如 MPI 实现、OpenSHMEM、任务调度器等)之间提供统一、可扩展、高效的通信机制。


一、PMIx 的核心作用

PMIx 提供以下能力:

  • 进程发现(Process discovery):运行时知道哪些进程属于当前作业及其网络地址/标识。
  • 键值存储(Key-Value Store, KVS):支持作业内或跨作业的分布式 KVS,用于存储启动参数、性能数据等。
  • 资源分配信息:获取 CPU/内存/GPU 资源分配详情。
  • 事件通知:支持错误处理、作业终止等事件的异步通知。
  • 服务发现/注册:为运行时组件提供服务注册与发现机制。
  • 统一 API:屏蔽底层调度器(Slurm/PBS/LSF)的差异,使 MPI/运行时系统只需对接 PMIx。

二、PMIx 与 Slurm 的集成

Slurm 从v17.11 开始内置支持 PMIx,并在v20.11+ 中默认启用 PMIx v3/v4。集成方式如下:

1. Slurm 配置

Slurm 的slurm.conf中需启用 PMIx 插件:

# slurm.conf LaunchParameters=pmix_v3

或指定具体版本(如pmix_v4)。

Slurm 守护进程(slurmctld,slurmd)会在作业启动时自动与 PMIx 服务通信。

2. MPI 实现通过 PMIx 与 Slurm 交互

现代 MPI 实现(如 Open MPI ≥ v4.0、MPICH ≥ v4.0)默认通过 PMIx 获取作业信息,无需用户干预。

例如,使用 Slurm 提交一个 Open MPI 作业:

srun--mpi=pmix-n64./my_mpi_app
  • --mpi=pmix:告诉 Slurm 使用 PMIx 作为 MPI 启动通道。
  • Open MPI 会通过libpmix与 Slurm 的pmd(PMIx daemon)通信,获取 rank 映射、网络信息等。

注意:Open MPI 默认已编译 PMIx 支持;MPICH 需启用--with-pmix编译。


三、使用示例:通过 PMIx API 获取作业信息(C 程序)

以下是一个简单的 PMIx 程序,展示如何获取当前进程的 rank 和总进程数:

#include<pmix.h>#include<stdio.h>intmain(intargc,char*argv[]){pmix_proc_tmyproc;pmix_value_t*val;pmix_status_trc;// 初始化 PMIxif(PMIX_SUCCESS!=(rc=PMIx_Init(&myproc,NULL,0))){fprintf(stderr,"PMIx_Init failed: %d\n",rc);returnrc;}printf("My namespace: %s, rank: %d\n",myproc.nspace,myproc.rank);// 获取总进程数(Slurm 会通过 PMIx 注入此信息)pmix_proc_tproc;PMIX_PROC_CONSTRUCT(&proc);strncpy(proc.nspace,myproc.nspace,PMIX_MAX_NSLEN);proc.rank=PMIX_RANK_WILDCARD;if(PMIX_SUCCESS==PMIx_Get(&proc,PMIX_JOB_SIZE,NULL,0,&val)){printf("Total ranks: %lu\n",val->data.uint32);PMIX_VALUE_RELEASE(val);}// FinalizePMIx_Finalize(NULL,0);return0;}

编译(需链接 PMIx):

gcc-opmix_demo pmix_demo.c$(pkg-config--cflags--libspmix)

通过 Slurm 运行

srun-n4./pmix_demo

输出示例

My namespace: slurm.job.12345, rank: 0 Total ranks: 4 My namespace: slurm.job.12345, rank: 1 Total ranks: 4 ...

四、PMIx + Slurm 的典型应用场景

场景说明
MPI 启动优化避免 SSH/树形启动开销,Slurm 直接 fork 进程并通过 PMIx 传递通信上下文。
异构任务调度任务调度器(如 Flux、Taskflow)通过 PMIx 获取 Slurm 资源分配,动态创建子任务。
作业内服务发现一个 rank 启动服务(如参数服务器),其他 rank 通过 PMIx KVS 发现其地址。
容错与事件通知某进程崩溃,PMIx 通知其他进程,触发恢复逻辑。

五、注意事项

  • 版本匹配:Slurm、PMIx、MPI 的版本需兼容。推荐使用 Slurm ≥ v22.05 + PMIx ≥ v4.2。
  • 调试:可通过PMIX_MCA_base_verbose=10环境变量查看 PMIx 日志。
  • 非 MPI 应用:你也可以在非 MPI 程序中直接调用 PMIx API 实现作业感知(如任务调度器、AI 训练框架)。

六、参考资源

  • PMIx 官网:https://pmix.org/
  • Slurm PMIx 文档:https://slurm.schedmd.com/pmix.html
  • Open MPI + PMIx:https://www.open-mpi.org/faq/?category=pmix
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 22:38:51

物理信息神经网络入门指南:从零开始掌握科学计算新范式

你是否还在为传统数值方法的复杂网格划分和庞大计算资源而烦恼&#xff1f;物理信息神经网络正在彻底改变这一现状。这种革命性的方法将深度学习与物理定律完美融合&#xff0c;让复杂微分方程求解变得前所未有的简单高效。作为科学计算领域的新手&#xff0c;现在有了完整的PI…

作者头像 李华
网站建设 2026/5/2 10:49:21

U-2-Net:重新定义显著对象检测的深度学习革命

U-2-Net&#xff1a;重新定义显著对象检测的深度学习革命 【免费下载链接】U-2-Net U-2-Net - 用于显著对象检测的深度学习模型&#xff0c;具有嵌套的U型结构。 项目地址: https://gitcode.com/gh_mirrors/u2/U-2-Net 在计算机视觉快速发展的浪潮中&#xff0c;一个名为…

作者头像 李华
网站建设 2026/4/26 6:37:53

image2lcd输出格式配置:C数组与Hex文件全面讲解

嵌入式图像资源处理实战&#xff1a;用好 image2LCD 的 C 数组与 Hex 输出你有没有遇到过这样的场景&#xff1f;产品要开机显示一个品牌 Logo&#xff0c;客户要求“一上电就得出来”&#xff0c;结果你从 SPI Flash 里读 PNG 解码&#xff0c;花了 800ms 才刷上去——用户还没…

作者头像 李华
网站建设 2026/4/21 1:22:24

3步掌握WAN2.2-14B-Rapid-AllInOne:开源AI视频生成实战指南

WAN2.2-14B-Rapid-AllInOne是一个革命性的开源AI视频生成项目&#xff0c;它将文本到视频、图像到视频、首尾帧连贯生成等多种功能整合到单个模型中&#xff0c;采用FP8精度优化和多种优化技术&#xff0c;真正实现了"一个模型解决所有问题"的愿景。这个基于WAN 2.2核…

作者头像 李华
网站建设 2026/5/2 4:34:25

MySQL Connector/J终极指南:快速构建稳定数据库连接的完整教程

MySQL Connector/J终极指南&#xff1a;快速构建稳定数据库连接的完整教程 【免费下载链接】mysql-connector-j MySQL Connector/J是一个开源的MySQL数据库连接器&#xff0c;用于在Java应用程序中与MySQL数据库进行交互。 - 功能&#xff1a;MySQL数据库连接器&#xff1b;Jav…

作者头像 李华
网站建设 2026/5/2 12:33:39

手把手教你完成IAR下载及基础配置(新手必看)

手把手教你搞定 IAR 下载与基础配置&#xff1a;从零开始的嵌入式开发第一步 你是不是也遇到过这种情况&#xff1f;刚拿到一块崭新的 STM32 开发板&#xff0c;满心期待地打开电脑准备“点灯”&#xff0c;结果一上来就被 IAR 安装失败、License 验证不通过、程序下载不了 …

作者头像 李华