一、实操前置准备

  1. 访问华为开发者空间官网(https://developer.huaweicloud.com/space/home),注册并登录账号,进入工作台界面。
  1. 领取免费云主机:工作台中点击“配置云主机”,选择Ubuntu操作系统(规格为鲲鹏通用计算增强型kc2 | 4vCPUs | 8G),等待部署完成。
  1. 准备工具:确保云主机桌面可正常访问,默认已预装CodeArts IDE、终端等基础工具,无需额外安装系统级依赖。

二、鲲鹏DevKit核心实操步骤(基于MPI应用并行调试与编译)

(一)自动部署鲲鹏云服务器

  1. 云主机桌面右键选择“Open Terminal Here”,打开终端窗口。
  1. 执行部署命令:hcd deploy --password abcd1234@ --time 7200(password可自定义,至少8个字符;time为服务器可用时间,7200秒=120分钟)。
  1. 记录部署成功后输出的鲲鹏云服务器公网IP(后续连接需使用)。

(二)安装鲲鹏DevKit插件

  1. 打开CodeArts IDE,点击右侧“扩展”按钮,搜索“Kunpeng DevKit”。
  1. 点击“安装”,完成后单击侧边栏鲲鹏DevKit图标启用插件。
  1. 插件功能验证:启用后可见“迁移、开发、调优、编译调试”等功能模块,表明安装成功。

(三)下载MPI程序源文件

  1. 终端中执行命令下载并解压:

wget https://codeload.github.com/kunpengcompute/devkitdemo/zip/refs/heads/devkitdemo-23.0.1

unzip devkitdemo-23.0.1

  1. 确认文件路径:解压后在“Compiler_and_Debugger/mpi_demo/”目录下找到bcast_demo.c源码文件。

(四)环境依赖安装(鲲鹏云服务器端)

  1. 终端中通过SSH连接远程服务器:ssh root@鲲鹏云服务器公网IP,输入密码登录。
  1. 安装OpenMPI(提供mpicc编译工具):

sudo yum update -y

sudo yum install -y openmpi openmpi-devel

  1. 配置环境变量:

export PATH=$PATH:/usr/lib64/openmpi/bin

export PATH=/path/to/GNU/bin:/path/to/OPENMPI/bin:$PATH

export LD_LIBRARY_PATH=/path/to/GNU/lib64:/path/to/OPENMPI/lib:$LD_LIBRARY_PATH

  1. 验证mpicc安装:执行mpicc --version,输出GCC版本信息即成功。
  1. 升级MPI至4.1.4版本(满足调试要求):

mkdir -p /path/to/OpenMPI

cd /path/to/OpenMPI

wget https://dtse-mirrors.obs.cn-north-4.myhuaweicloud.com/case/0018/openmpi-4.1.4.tar.gz

tar -zxvf openmpi-4.1.4.tar.gz

  1. 创建[libstdc++.so](libstdc++.so).6软链接(解决版本兼容问题):

sudo ln -s /opt/DevKit/tools/libstdc++.so.6 /usr/lib64/libstdc++.so.6

(五)应用编译配置

  1. CodeArts IDE中打开bcast_demo.c,修改85行代码:int color = rankNum / 1;(1个rank为1个通信子组)。
  1. 打开鲲鹏DevKit插件,点击“开始使用”,配置服务器信息:
  1. IP地址:鲲鹏云服务器公网IP
  1. HTTPS端口:8086
  1. 服务证书:选择“信任当前服务证书”
  1. 首次登录创建管理员密码,进入“编译”模块,添加目标服务器:
  1. SSH用户名:root
  1. SSH端口:22
  1. 连接方式:密码(输入服务器root密码)
  1. 工作空间:/workspace
  1. 配置编译命令:mpicc -g bcast_demo.c -o bcast_demo,点击“开始编译”。
  1. 编译验证:服务器/root/workspace/mpi_demo目录下生成bcast_demo可执行文件即成功。

(六)HPC并行应用调试

  1. 鲲鹏DevKit中切换至“调试”模块,选择“UPC并行应用”,配置参数:
  1. 应用程序:/root/workspace/mpi_demo/bcast_demo
  1. 应用程序源码路径:/root/workspace/mpi_demo
  1. MPI运行命令行:mpirun --allow-run-as-root -np 2
  1. 点击“开始调试”,读取rank状态(成功2个rank)后进入调试页面。
  1. 调试操作(支持3种调试粒度):
  1. 全部调试:选择“全部”,在89行、47行、93行打断点,点击“继续”可同步调试所有rank。
  1. 通信组调试:选择“通信组”,可单独调试某一通信子组(如仅调试通信子组1的rank1)。
  1. 单rank调试:选择“rank”,精准调试单个进程。
  1. 关键调试步骤:
  1. 执行MPI_Comm_split函数:将2个rank分成2个通信子组。
  1. 执行MPI_Barrier函数:实现通信子组同步等待。
  1. 执行MPI_Comm_free函数:释放通信子组资源。
  1. 调试完成:点击“停止”,查看调试控制台输出的运行日志和性能数据。

(七)常见问题解决

  1. 编译失败报错“ No such file or directory”:
  1. 原因:缓存文件导致项目同步失败
  1. 解决:终端执行cd /home/developer/Desktop/devkitdemo-devkitdemo-23.0.1/Compiler_and_Debugger/mpi_demo && rm -rf .devkit/,重新编译。

三、鲲鹏DevKit CI/CD流水线搭建与使用

(一)流水线核心架构

基于华为云CodeArts生产线+鲲鹏DevKit插件,实现“代码拉取→编译构建→并行调试→部署上线”全流程自动化。

(二)流水线搭建步骤

  1. 进入华为开发者空间“CodeArts生产线”,新建流水线,选择“自定义流水线”。
  1. 配置源码源:选择GitHub,输入mpi_demo项目仓库地址(https://github.com/kunpengcompute/devkitdemo),选择devkitdemo-23.0.1分支。
  1. 添加“编译构建”阶段:
  1. 选择“鲲鹏DevKit编译”模板,关联已配置的鲲鹏云服务器。
  1. 编译命令:mpicc -g bcast_demo.c -o bcast_demo
  1. 输出产物:/root/workspace/mpi_demo/bcast_demo
  1. 添加“并行调试”阶段:
  1. 选择“鲲鹏DevKit调试”模板,配置调试参数(同前文调试配置)。
  1. 启用“死锁检测”,超时时间设置为30秒。
  1. 添加“部署上线”阶段:
  1. 选择“云服务器部署”,输入目标服务器IP和部署路径(/opt/mpi_app)。
  1. 部署命令:cp /root/workspace/mpi_demo/bcast_demo /opt/mpi_app && chmod +x /opt/mpi_app/bcast_demo
  1. 保存流水线,启用“自动触发”:设置当GitHub仓库代码推送时自动执行流水线。

(三)流水线使用方法

  1. 手动触发:点击流水线“运行”按钮,选择目标分支,即可执行全流程。
  1. 自动触发:向GitHub仓库推送代码修改(如修改bcast_demo.c的通信子组规则),流水线自动启动。
  1. 结果查看:流水线执行完成后,可在“执行记录”中查看各阶段日志,调试阶段支持查看rank运行状态和通信子组变化。

四、鲲鹏DevKit工具使用经验分享(迁移+调优+诊断)

(一)应用迁移经验

  1. 适配鲲鹏架构:使用DevKit“应用迁移”模块的“亲和分析”功能,自动检测代码中不兼容鲲鹏架构的API(如x86专属指令),并给出替换建议。
  1. 批量迁移效率:对于多模块项目,通过“软件包重构”功能,批量处理依赖库适配,避免逐个编译报错。
  1. 迁移验证:迁移后通过“64位运行模式检查”“字节对齐检查”,确保应用在鲲鹏平台稳定运行。

(二)性能调优技巧

  1. 编译优化:使用DevKit“自动反馈优化编译”功能,工具会根据服务器硬件特性(鲲鹏920芯片)自动调整编译参数(如启用-march=armv8-a),提升运行效率。
  1. 并行调优:通过调试阶段的“rank性能监控”,识别性能瓶颈rank(如rank0执行时间过长),优化通信子组划分规则。
  1. 资源调优:结合华为云ECS监控数据,调整云服务器规格(如升级至8vCPUs+16G内存),适配高并发MPI应用。

(三)问题诊断能力

  1. 死锁诊断:调试阶段启用“死锁检测”,工具自动捕获MPI_Comm_split、MPI_Barrier等函数的死锁场景,定位到具体代码行。
  1. 编译错误诊断:DevKit终端会输出详细的编译日志,对于依赖缺失问题,工具会给出 yum安装命令建议(如缺少openmpi-devel时提示sudo yum install openmpi-devel)。
  1. 运行时诊断:通过“系统性能分析”模块,监控应用CPU、内存占用情况,识别内存泄漏(如sendData未释放)等问题。

(四)核心优势总结

  1. 全流程工具链:从迁移、编译、调试到部署,无需切换多工具,DevKit一站式搞定。
  1. 并行调试高效:支持多rank、多通信组同时调试,相比传统调试工具效率提升50%。
  1. 鲲鹏架构深度适配:工具针对鲲鹏芯片优化,编译产物性能比通用工具提升30%左右。
  1. 免费资源支持:云主机、调试环境、流水线均提供免费额度,适合个人开发者和高校学生学习使用。

五、总结

华为云鲲鹏DevKit为鲲鹏架构应用开发提供了高效的工具支撑,通过本文的实操步骤,可快速掌握MPI应用的并行编译调试与CI/CD流水线搭建。在实际使用中,结合DevKit的迁移、调优、诊断功能,能大幅降低鲲鹏平台应用开发的门槛和周期。建议新手从简单MPI应用入手,逐步探索复杂项目的全流程自动化,充分发挥鲲鹏架构的算力优势。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐