首页 > 系统相关 >通过MPI_Comm_rank()、MPI_Comm_size()获取进程标志

通过MPI_Comm_rank()、MPI_Comm_size()获取进程标志

时间:2024-04-30 16:13:27浏览次数:31  
标签:name int rank MPI Comm 节点

认识三个MPI函数:

(1)获取当前进程标识函数:int MPI_Comm_rank(MPI_Comm comm,int *rank)

(2)获取通信域包含的进程总数函数:int MPI_Comm_size(MPI_Comm comm,int *size)

(3)获取本进程的机器名函数:int MPI_Get_processor_name(char *name,int *resultlen)

代码示例:

/*文件名:helloworld.c*/
#include"mpi.h"
#include<stdio.h>
int main(int argc,char **argv)
{
    int myid,numprocs;
    int namelen;
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    MPI_Init(&argc,&argv);
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
    MPI_Get_processor_name(processor_name,&namelen);
    printf("Hello World!Process %d of %d on %s\n",myid,numprocs,processor_name);
    MPI_Finalize();
}

运行结果:

 程序说明:

本实例程序启动后会在各个节点同时进行,各节点通过MPI_Comm_rank()函数取得自己的进程标识myid,不同的进程执行MPI_Comm_rank()函数后返回的结果不同,如节点0返回的myid值为0;通过MPI_Comm_size()函数获得MPI_COMM_WORLD通信域中的进程总数numprocs,通过MPI_Get_proccessor_name()函数获得本进程所在的机器名。各进程调用自己的打印语句将结果打印出来,一般MPI中对进程的标识是从0开始的。在本例中机器名分别为Node1,Node2,Node3共3个节点。这里需要强调的是,MPI并行程序中的变量是分布存储的,每个节点都有自己独立的存储地址空间,如myid、numprocs、namelen等变量在各个节点是独立的,相同的变量名他们的值时可以不同的。下图解释了本实例运行时的情况:每个节点都有独立的变量存储空间,程序的副本存在于所有节点并分别得到执行,各个节点计算时的地位是平行的。

6进程情况(可根据需要自行设置):

 

标签:name,int,rank,MPI,Comm,节点
From: https://www.cnblogs.com/doris510/p/18168207

相关文章

  • Jumping Through Segments
    题目:链接:https://www.luogu.com.cn/problem/CF1907D大致思路:二分模拟关键点:①确定二分区间:最小值为第一次跳的左边界,最大值为连续两个线段的最远值(注意,应该有四种情况:左1减右1,左2减右1,左1减右2,左2减右2,取绝对值);②确定如何模拟:递推:假定跳跃长度≤k(mid),那么下一个最远就是ra+......
  • IDEA Plugins:Show Comment(快捷显示注释)安装及使用
    感谢友情分享此插件的同学--夏生简介ShowdoccommentattheProjectviewTree,lineEnd,json,other在文件树、行末、JSON等地方显示注释.说明强制依赖被引用字段、方法等的注释,若是被引用的对象没有注释,则不会显示效果下载安装插件:Ctrl+Alt+S搜索Plugins,Then搜索......
  • Campisi归因
    对于权益资产,Brinson模型名扬天下。对于债券类资产,Campisi似乎是主流 1)Campisi归因模型是一种用于债券投资组合业绩分析的方法,它允许投资者和基金经理对债券投资组合的收益进行详细的分解,以识别不同因素对收益的贡献。这种模型特别适用于纯债型基金的业绩归因分析,因为它基于持......
  • Git commit的格式规范
    这是一条gitcommit命令$gitcommit-m"helloworld"一般来说,可以想怎么写怎么写,但是规范的格式能够让审阅部分更快,介绍Angular规范(见上图),这是目前使用最广的写法,比较合理和系统化,并且有配套的工具。Commitmessage的格式每次提交,Commitmessage都包括三个部分:Header,Bo......
  • 导入文件报错(common.AssertionFailed at common.Assert.verify)
    common.AssertionFailedatcommon.Assert.verify(UnknownSource)atjxl.read.biff.WorkbookParser.getName(UnknownSource)atjxl.biff.formula.NameRange.read(UnknownSource)atjxl.biff.formula.TokenFormulaParser.g(UnknownSource)atjxl.b......
  • idea启动项目时抛出错误信息Error running 'XXXApplication' Error running XXXApplic
    很多新手小白在启动项目时会出现下面问题,不知道怎么办出现的问题:启动项目时抛出下图错误提示:Errorrunning'XXXApplication'ErrorrunningXXXApplication.Commandlineistoolong.Shortenthecommandlineandrerun. 解决办法:1、直接点击下图位置,进入EditRunConfi......
  • sudo: apt-get: command not found
    sudo:apt-get:commandnotfoundhttps://blog.csdn.net/zhengzhaoyang122/article/details/136132952问题LinuxRedHat执行sudo卸载nginx时,出现commandnotfound错误[root@iZuf65h6i43ltlzhqolumyZlocal]#sudoapt-getremovenginxsudo:apt-get:commandnotfound12解......
  • 易基因:Nat Commun:RRBS测序揭示小鼠衰老过程中的DNA甲基化变化轨迹|研究速递
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。DNA甲基化数据可以生成非常精确的年龄预测器,但关于这一关键表观遗传生物标志物在生命周期中的动态变化知之甚少。关于衰老不连续方面的研究仍处于起步阶段,关键的分子过程如表观基因组调控过程还有待研究。莱布尼......
  • openGauss 如何解决-Configure-error-C-compiler-cannot-create-executables-报错
    如何解决“Configureerror:Ccompilercannotcreateexecutables”报错问题如何解决版本编译时出现的“Configureerror:Ccompilercannotcreateexecutables”报错。回答报错原因:binarylibs文件不完整或者被损坏。解决办法:若binarylibs是通过开源软件构建而来,请重新构......
  • git commit乱码
    从您提供的信息来看,您在尝试使用gitcommit命令提交代码时遇到了乱码问题。具体表现为提交信息包含乱码字符,无法正常识别。以下是对您所描述情况的分析与建议的恢复步骤:问题分析:提交信息乱码:您提供的提交信息'上传压缩包识别名称和描述不完全乱码'后面跟着的是一串看似无......