Prog3: helloword3.c 显示每个进程执行在哪个机器节点上

本文介绍了如何使用MPI初始化并行任务环境,并通过MPI_Get_processor_name函数获取当前进程的名称。通过实例展示了在不同主机上分配进程的场景,以及输出各进程在总任务数中的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 根据Prog1改写
    #include<stdio.h>      
    #include"mpi.h"

    int main(int argc, char *argv[]){  
            int totalTaskNum, rankID;
            
            int rt = MPI_Init(&argc, &argv);
            if(rt != MPI_SUCCESS){  
                    printf("Error starting MPI.\n");
                    MPI_Abort(MPI_COMM_WORLD, rt);
            }

            MPI_Comm_size(MPI_COMM_WORLD, &totalTaskNum);     
            MPI_Comm_rank(MPI_COMM_WORLD, &rankID);  

            char processorName[MPI_MAX_PROCESSOR_NAME];  //
            int  resultLength;                           //
            MPI_Get_processor_name(processorName,&resultLength);//

            printf("Hellow, world! %dth of totalTaskNum = %d on %s\n", rankID, totalTaskNum, processorName);//add "on %s", processName  
            MPI_Finalize();     

            return 0;     
  } 

2. 编译执行

    [amao@amao991 mpi-study]$ mpicc -o helloworld3 helloworld3.c
    [amao@amao991 mpi-study]$ mpiexec -n 10 ./helloworld3
    Hellow, world! 0th of totalTaskNum = 10 on amao991
    Hellow, world! 1th of totalTaskNum = 10 on amao991
    Hellow, world! 2th of totalTaskNum = 10 on amao991
    Hellow, world! 6th of totalTaskNum = 10 on amao991
    Hellow, world! 9th of totalTaskNum = 10 on amao991
    Hellow, world! 3th of totalTaskNum = 10 on amao991
    Hellow, world! 7th of totalTaskNum = 10 on amao991
    Hellow, world! 8th of totalTaskNum = 10 on amao991
    Hellow, world! 4th of totalTaskNum = 10 on amao992
    Hellow, world! 5th of totalTaskNum = 10 on amao992

3. 总结

    (1)amao991上分配4个(process 0~3),然后amao992分配两个(process 4-5),然后amao991再分配4个(process 6-9)

    (2)函数  MPI_Get_processor_name(processorName,&resultLength);

        详细解释见: 连接1    连接2


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值