并行计算之MPI(四)

第一个MPI程序

用C+MPI实现

#include"mpi.h"
#include<stdio.h>
#include<math.h>
void main(argc,argv)
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);
    fprintf(stderr,"Hello World! Process%dof%don%s\n",myid,numprocs,processor_name);
    MPI_Finalize();
}

代码解析:

  • MPI_MAX_PROCESSOR_NAME是MPI预定义的宏,即某一MPI的具体实现中允许机器名字的最大长度机器名放在变量processor_name。整型变量myidnumprocs分别用来记录某一个并行执行进程的标识和所有参加计算的进程的个数,namelen是实际得到的机器名字的长度。

  • MPI程序的开始和结束必须是MPI_Init和MPI_Finalize分别完成MPI程序的初始化和结束工作

  • MPI程序的程序体包括各种MPI过程调用语句和C语句,MPI_Comm_rank得到当前正在运行的进程的标识号放在myid中,MPI_Comm_size得到所有参加运算的进程的个数放在numprocs中,MPI_Get_processor_name得到本进程运行的机器的名称结果放在processor_name中,它是一个字符串而该字符串的长度放在namelen中。

fprintf语句将本进程的标识号并行执行的进程的个数,本进程所运行的机器的名字,打印出来。和一般的C程序不同的是这些程序体中的执行语句是并行执行,的每一个进程都要执行,不妨指定本程序启动时共产生4个进程同时运行,而运行本程序的机器的机器名为tp5,4个进程都在tp5上运行,其标识分别为0123执行结果如图所示。虽然这一MPI程序本身只有一条打印语句,但是由于它启动了四个进程,同时执行每个进程都执行打印操作,故而最终的执行结果有四条打印语句。
在这里插入图片描述

在这里插入图片描述
由于MPI并行程序是在原来串行程序基础上的扩展,在许多地方和串行程序是相同的串行程序设计的,许多经验是可以应用到并行程序设计中的,但是同时我们必须注意在设计MPI程序的时候头脑中必须有程序并行执行的概念,而不是原来有序的串行执行,这才是串行和并行最主要的区别。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文版mpi编程手册 写得很详细 都志辉编著 李三立审阅 陈渝刘鹏 校对 本书介绍目前最常见的并行程序—MPI并行程序的设计方法它适合高校三年级本科 生非计算机专业研究生作为教材和教学自学参考书也适合于广大的并行计算高性能计 算用户作为自学参考书使用对于有FORTRAN和C编程经验的人员都可以阅读并掌握 本书的内容 首先介绍了并行程序设计的基础提供给读者进行并行程序设计所需要的基本知识然 后介绍了MPI的基本功能从简单的例子入手告诉读者MPI程序设计的基本过程和框架 这一部分是具有C或/FORTRAN串行程序设计经验的人员很容易理解和接受的接下来介绍 MPI程序设计的高级特征是已经掌握了MPI基本程序设计的人员进一步编写简洁高效的 MPI程序使用各种高级和复杂的MPI功能所需要的最后一部分介绍了MPI的最新发展和 扩充MPI-2 主要包括三个部分动态进程管理远程存储访问和并行文件读写 本书包括了MPI-1的全部调用和MPI-2的关键扩充部分的调用并附以大量的图表和示 例性程序对程序的关键部分给出了讲解或注释读者若能将例子和对MPI调用的讲解结合 起来学习会取得更好的效果 本书的目的不仅是教给读者如何去编写从简单到复杂的MPI并行程序更重要的是 希望在学习本书之后在读者以后解决问题的过程中能够树立并行求解的概念使并行方 法真正成为广大应用人员和程序开发员手中的重要工具

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值