You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:如何在Azure两台CentOS A8 VM上运行Intel MPI RDMA应用

解决CentOS上Intel MPI RDMA pingpong测试程序缺失的问题

我帮你搞定这个CentOS上Intel MPI RDMA测试的问题,尤其是你提到的pingpong工具缺失的情况,一步步来:

1. 先确认Intel MPI的安装完整性

首先检查你的Intel MPI是不是没装全测试组件。如果是通过包管理器装的,试试安装intel-mpi-tests这类配套包(CentOS官方源或者Intel的repo里应该有)。要是你手动下载的Intel MPI安装包,安装时得确保勾选了「测试工具」的选项。

你可以用这条命令先确认MPI的基本状态:

mpiexec --version

然后去默认安装路径(一般是/opt/intel/mpi/<你的版本号>/)里找找bin或者test目录,看看有没有pingpongpingping这些现成的测试工具。

2. 手动编译一个pingpong测试程序

要是确实找不到自带的工具,咱们自己写个极简的RDMA pingpong程序就行,用MPI标准API就能实现。把下面的代码保存成pingpong.c

#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    int rank, size;
    char message[100];
    MPI_Status status;

    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    if (size != 2) {
        if (rank == 0) printf("这个测试需要正好2个进程!\n");
        MPI_Finalize();
        return 1;
    }

    if (rank == 0) {
        sprintf(message, "来自rank 0的问候");
        MPI_Send(message, 100, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
        MPI_Recv(message, 100, MPI_CHAR, 1, 0, MPI_COMM_WORLD, &status);
        printf("Rank 0收到:%s\n", message);
    } else {
        MPI_Recv(message, 100, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status);
        printf("Rank 1收到:%s\n", message);
        sprintf(message, "来自rank 1的问候");
        MPI_Send(message, 100, MPI_CHAR, 0, 0, MPI_COMM_WORLD);
    }

    MPI_Finalize();
    return 0;
}

然后用Intel MPI的编译器编译:

mpiicc pingpong.c -o pingpong

这样就得到可执行的pingpong程序了。

3. 配置RDMA环境并运行测试

跑测试前,先把RDMA环境确认好:

  • ibv_devinfo命令检查两台VM的RDMA设备状态(如果没装这个工具,先执行yum install rdma-core安装),确保10.1.1.0/24网段的接口已经启用RDMA。
  • 运行测试时,指定Intel MPI用RDMA传输机制,比如:
mpiexec -hosts VM1,VM2 -env I_MPI_FABRICS=shm:dapl -env I_MPI_DAPL_PROVIDER=ofa-v2-ib0 ./pingpong

注意I_MPI_DAPL_PROVIDER的值要根据你的RDMA设备调整,比如如果是mlx4_0网卡,可能要改成ofa-v2-mlx4_0

另外别忘了检查Azure的NSG规则,确保两台VM之间的RDMA流量是允许的(A8实例默认是开放的,但最好确认一下)。

4. 其他RDMA连通性验证方法

要是pingpong还是有问题,先用ibping测试底层RDMA硬件连通性:

  • 在VM2上启动服务端:ibping -s
  • 在VM1上发起测试:ibping -c 4 <VM2的RDMA接口IP>
    这个工具直接测试RDMA硬件层的连通性,能帮你快速排除底层网络问题。

内容的提问来源于stack exchange,提问作者Farhana Sarker

火山引擎 最新活动