news 2026/3/31 11:32:04

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/3/28 19:55:59

Java 8编程实战指南:从环境搭建到项目精通的完整路径

Java 8编程实战指南&#xff1a;从环境搭建到项目精通的完整路径 【免费下载链接】OnJava8 《On Java 8》中文版 项目地址: https://gitcode.com/gh_mirrors/on/OnJava8 想要系统掌握Java 8核心特性却不知从何入手&#xff1f;本文将为你规划一条清晰的学习路线&#x…

作者头像 李华
网站建设 2026/3/20 10:37:08

Windows远程桌面多用户失效?3步快速修复指南

Windows远程桌面多用户失效&#xff1f;3步快速修复指南 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 当你发现Windows远程桌面突然无法支持多用户同时连接&#xff0c;R…

作者头像 李华
网站建设 2026/3/31 8:04:27

告别RDPWrap失效困扰:5大Windows远程桌面多用户连接替代方案

告别RDPWrap失效困扰&#xff1a;5大Windows远程桌面多用户连接替代方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 当Windows远程桌面多用户连接功能突然失效时&#…

作者头像 李华
网站建设 2026/3/18 6:34:45

WAN2.2-Rapid-AIO:重塑AI视频创作的全新范式

WAN2.2-Rapid-AIO&#xff1a;重塑AI视频创作的全新范式 【免费下载链接】WAN2.2-14B-Rapid-AllInOne 项目地址: https://ai.gitcode.com/hf_mirrors/Phr00t/WAN2.2-14B-Rapid-AllInOne 你是否曾经为了制作一段简单的视频而花费数小时&#xff1f;传统的视频制作流程复…

作者头像 李华
网站建设 2026/3/21 11:46:53

革命性JSON日志方案:Python JSON Logger技术深度解析

革命性JSON日志方案&#xff1a;Python JSON Logger技术深度解析 【免费下载链接】python-json-logger Json Formatter for the standard python logger 项目地址: https://gitcode.com/gh_mirrors/py/python-json-logger 在现代云原生应用架构中&#xff0c;传统文本日…

作者头像 李华
网站建设 2026/3/25 9:25:59

VoAPI:构建企业级AI模型管理的终极解决方案

VoAPI&#xff1a;构建企业级AI模型管理的终极解决方案 【免费下载链接】VoAPI 全新的高颜值/高性能的AI模型接口管理与分发系统&#xff0c;仅供个人学习使用&#xff0c;请勿用于任何商业用途&#xff0c;本项目基于NewAPI开发。A brand new high aesthetic/high-performance…

作者头像 李华