MPI相关网址

2007年09月11日 星期二 18:27

参考:http://forum.petro-china.com/index.php?showtopic=1739

MPICH主页
http://www-unix.mcs.anl.gov/mpi/mpich2/

MPI介绍网址:
http://www-unix.mcs.anl.gov/mpi/

MPI 入门介绍(英文) by John Burkardt , Florida State University
http://www.csit.fsu.edu/~burkardt/pdf/mpi_course.pdf

4天的Powerpoint style PDF file by John Burkardt , Florida State University
http://www.csit.fsu.edu/~burkardt/pdf/mpi_day1.pdf
http://www.csit.fsu.edu/~burkardt/pdf/mpi_day2.pdf
http://www.csit.fsu.edu/~burkardt/pdf/mpi_day3.pdf
http://www.csit.fsu.edu/~burkardt/pdf/mpi_day4.pdf

国内的书有一本:
高性能计算并行编程技术-MPI 并行程序设计 (都志辉, 清华大学出版社, 2001),
入门书, 基本上是英文说明的翻译.

-------------------------------------------------------------------

SOURCE CODES (C, C++, FORTRAN77, FORTRAN90)

C和MPI的source codes
http://www.csit.fsu.edu/~burkardt/c_src/mpi/mpi.html

C++和MPI的source codes
http://www.csit.fsu.edu/~burkardt/cpp_src/mpi/mpi.html

FORTRAN77和MPI的source codes
http://www.csit.fsu.edu/~burkardt/f77_src/mpi/mpi.html

FORTRAN90和MPI的source codes
http://www.csit.fsu.edu/~burkardt/f_src/mpi/mpi.html


文 / Liang T. Chen(Sun公司杰出工程师及软件架构师)

摘自 "并行计算应用程序开发"
http://www.csdn.net/zhengwen/zhengwen007.htm


3. MPI

3.1 MPI概要
  

图3:MPI send与receive例程

  MPI是一种工业标准的API规范,专为在多处理器计算机和计算机集群上获得高性能计算而设计,该标准是由大量计算机供应商和软件开发商共同设计的。有多种来自不同研究机构和厂商的MPI实现,其中最流行的一种就是MPICH,MPICH常用作为特定平台或互连而优化的MPI实现的编码基础(有兴趣的读者请访问http://www-unix.mcs.anl.gov/mpi网站,获得MPI标准和关于MPICH的更多信息)。

  MPI为并行应用程序提供了一种分布式的内存编程模型。尽管整个MPI API集相对较大,其中包含超过300个例程,但在编写许多MPI应用程序时,需要使用的基本例程都不会超过十几个。图3展示了一个用于消息通信的send和receive例程对。两个例程的前三个参数均指定了位置、数据类型和消息数量;第四个参数标识了通信的目标进程;第五个参数标记了ID,从而进一步提供了一种区分不同消息的机制;第六个参数指定了通信上下文。在receive例程中还有一个额外的参数,用于报告接收状态。

  在MPICH设计中,整个API集都是在一个低层设备互连例程的小型核心集之上实现并构建的。这一设计体系结构带来了更好的跨不同平台可移植性。惟一的需求就是重新处理设备互连例程的小型核心集,以为新平台或互连移植、优化MPICH。

  MPI实现依然在不断发展。MPI-1支持一些关键特性,如点到点及与通信设备的集群消息通信。一条消息中可包含基本数据类型或派生(用户定义的)数据类型的MPI数据。消息数据内容可以是压缩格式,也可以是非压缩格式;另外,它还支持互连拓扑。MPI-2则提供许多高级通信特性,如远程内存访问和单端通信等;它还支持动态进程创建、管理和并行IO。

3.2 内存层次结构

  

图4:非统一内存性能

  根据半导体技术和计算机体系结构的现状,起决定性作用的系统性能因素是内存层次结构,而不是CPU时钟频率——图4展示了非统一内存性能图。如果应用程序的绝大多数指令和数据内存访问都位于缓存范围内,该程序的运行速度将更快。由于MPI是一种分布式内存编程模型,因此对于大多数应用程序来说,利用MPI通常可获得良好的线性可伸缩性。当MPI应用程序被分割开来,以在计算节点的大型集群上运行时,各MPI进程的内存空间就减少了,且内存访问将位于内存层次结构的高性能范围内。非统一内存性能效果适用于包括OpenMP在内的其他编程模型。

3.3 MPI的局限性

  总体而言,MPI为计算机集群上的并行应用程序提供了一个出色的解决方案,但对于许多开发人员来说,MPI也是一种困难的编程模型。因为MPI的通信延迟时间较长,所以必须合理分割程序的核心逻辑,以使分布成本更为合理。分析及划分应用程序问题并将问题映射到分布式进程集合中绝对不是一项可靠直觉完成的任务。因为许多MPI进程之间的交互作用都相当复杂,因此即便选用了恰当的工具,调试并调整运行在大量节点上的MPI应用程序也极具挑战性。MPI例程实现的质量可能会带来一些额外的软件开发挑战。MPI的性能取决于底层硬件平台和互连。在某些极端的情况下,MPI应用程序的性能可能会受到繁重的互连流量的影响。另外一个严重的问题就是大规模MPI应用程序的可靠性。对于许多MPI实现而言,只要单一计算节点发生故障,无法正确响应,MPI程序就会停止工作。不幸的是,当MPI应用程序在数千个计算节点上长期运行时,故障率即会变得不容忽视。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值