news 2026/2/24 3:39:46

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/2/22 11:11:49

PaddleOCR多平台部署终极指南:从零到精通的全栈方案

PaddleOCR多平台部署终极指南&#xff1a;从零到精通的全栈方案 【免费下载链接】PaddleOCR 飞桨多语言OCR工具包&#xff08;实用超轻量OCR系统&#xff0c;支持80种语言识别&#xff0c;提供数据标注与合成工具&#xff0c;支持服务器、移动端、嵌入式及IoT设备端的训练与部署…

作者头像 李华
网站建设 2026/2/18 6:10:54

终极指南:快速部署开源笔记工具的完整教程

终极指南&#xff1a;快速部署开源笔记工具的完整教程 【免费下载链接】open-notebook An Open Source implementation of Notebook LM with more flexibility and features 项目地址: https://gitcode.com/GitHub_Trending/op/open-notebook 在当今AI技术蓬勃发展的时代…

作者头像 李华
网站建设 2026/2/15 13:10:56

移动端Minecraft启动神器:PojavLauncher使用全攻略

移动端Minecraft启动神器&#xff1a;PojavLauncher使用全攻略 【免费下载链接】PojavLauncher A Minecraft: Java Edition Launcher for Android and iOS based on Boardwalk. This repository contains source code for Android platform. 项目地址: https://gitcode.com/g…

作者头像 李华
网站建设 2026/2/22 23:59:33

Qwen3-VL视频理解能力实测:数小时视频秒级索引与完整回忆

Qwen3-VL视频理解能力实测&#xff1a;数小时视频秒级索引与完整回忆 在智能系统日益“看懂”世界的今天&#xff0c;一个核心挑战始终悬而未决&#xff1a;如何让AI真正记住一段长达数小时的视频内容&#xff0c;并在几秒钟内精准回答“刚才说了什么&#xff1f;”、“那个画面…

作者头像 李华
网站建设 2026/2/23 23:53:27

Winapp2:为Windows系统提供终极清理解决方案

Winapp2&#xff1a;为Windows系统提供终极清理解决方案 【免费下载链接】Winapp2 A database of extended cleaning routines for popular Windows PC based maintenance software. 项目地址: https://gitcode.com/gh_mirrors/wi/Winapp2 Winapp2是一个强大的Windows系…

作者头像 李华
网站建设 2026/2/18 15:19:58

星火应用商店:重塑Linux应用生态的智能解决方案

星火应用商店&#xff1a;重塑Linux应用生态的智能解决方案 【免费下载链接】星火应用商店Spark-Store 星火应用商店是国内知名的linux应用分发平台&#xff0c;为中国linux桌面生态贡献力量 项目地址: https://gitcode.com/spark-store-project/spark-store 在Linux桌面…

作者头像 李华