什么是MPI:

MPI是一个库,而不是一门语言。但是按照并行语言的分类,可以把FORTRAN+MPI或者C+MPI看作是一种在原来串行语言基础上扩展后得到的并行语言。MPI库可以被FORTRAN77/C/FORTRAN90/C++调用,从语法上说,它遵守所有对库函数/过程的调用规则,和一般的函数/过程没有什么区别。

MPI是一种标准或规范的代表,而不特指某一个对它的具体实现。迄今为止,所有的并行计算机制造商都提供对MPI的支持,可以在网上免费得到MPI在不同并行机上的实现。一个正确的MPI程序,可以不加修改地再所有的并行机上运行。

MPI是一种消息传递编程模型,并成为这种编程模型的代表和标准。

消息传递方式是广泛应用于多类并行机的一种模式,特别是那些分布存储并行机,尽管在具体的实现上有许多不同,但通过消息完成进程通信的基本概念是容易理解的。十多年来,这种模式在重要的计算应用中已取得了实质进步。有效和可移植地实现一个消息传递系统是可行的,因此,通过定义核心库程序的语法、语义,这将在大范围计算机上可有效实现将有益于广大用户。这是MPI产生的重要原因。

MPI的目的:较高的通信性能,较好的程序可移植性,强大的功能。

提供应用程序编程接口
提高通信效率,措施包括避免存储器到存储器的多次重复拷贝,允许计算和通信的重叠等
可在异构环境下提供实现
提供的接口可以方便C语言和Fortran77的调用
提供可靠的通信接口,即用户不必处理通信失败
定义的接口和现在已有接口,如PVM、NX、Express、p4等。差别不能太大。但是允许扩展以提供更大的灵活性
定义的接口能在基本的通信和系统软件无重大改变时,在许多并行计算机生产商的平台上实现。接口的语义是独立于语言的

接口设计应是线程安全的

MPI的产生:

MPI的语言绑定:

在MPI-1中明确提出了MPI和FORTRAN77与C语言的绑定,并且给出了通用接口和针对FORTRAN77与C的专用接口说明。

在MPI-2中除了和原来的FORTRAN77和C语言实现绑定之外,进一步与Fortran90和C++结合起来,提供了四种不同的接口,为编程者提供了更多选择的余地。但是MPI-2目前还没有完整的实现版本。

目前主要的MPI实现:

MPICH是一种最重要的MPI实现,它可以免费从http://www-unix.mcs.anl.gov/mpi/mpich取得。更为重要的是,MPICH是一个与MPI-1规范同步发展的版本,每当MPI推出新的版本就会有相应的MPICH的实现版本。目前MPICH的最新版本是MPICH-1.2.1。

CHIMP是Edinburgh开发的另一个免费MPI实现,是在EPCC(Edinburgh Parallel Computing Centre)的支持下进行的。从ftp://ftp.epcc.ed.ac.uk/pub/packages/chimp/release/可以免费下载该软件。

LAM (Local Area Multicomputer)也是免费的MPI实现,由Ohio State University开发。它目前的最新版本是LAM/MPI 6.3.2,可以从http://www.mpi.nd.edu/lam/download/下载。它主要用于异构的计算机网络计算系统。

MPI简介的更多相关文章

  1. MPI编程简介[转]

    原文地址http://blog.csdn.net/qinggebuyao/article/details/8059300 3.1 MPI简介 多线程是一种便捷的模型,其中每个线程都可以访问其它线程的存 ...

  2. YARN学习笔记(一)——YARN的简介

    YARN的简介 什么是YARN MRv1的架构和缺陷 经典MapReduce的局限性 解决可伸缩性问题 YARN的架构 一个可运行任何分布式应用程序的集群 YARN中的应用程序提交 YARN的其他特性 ...

  3. 大数据计算框架Hadoop, Spark和MPI

    转自:https://www.cnblogs.com/reed/p/7730338.html 今天做题,其中一道是 请简要描述一下Hadoop, Spark, MPI三种计算框架的特点以及分别适用于什 ...

  4. 深度学习GPU集群管理软件 OpenPAI 简介

    OpenPAI:大规模人工智能集群管理平台 2018年5月22日,在微软举办的“新一代人工智能开放科研教育平台暨中国高校人工智能科研教育高峰论坛”上,微软亚洲研究院宣布,携手北京大学.中国科学技术大学 ...

  5. apache基金会开源项目简介

    apache基金会开源项目简介   项目名称 描述 HTTP Server 互联网上首屈一指的HTTP服务器 Abdera Apache  Abdera项目的目标是建立一个功能完备,高效能的IETF ...

  6. NVIDIA GPU架构与原理分析(一)——GPU简介与主流Fermi、Kepler架构GPU概述

    1 GPU简介 图形处理单元GPU英文全称Graphic Processing Unit,GPU是相对于CPU的一个概念,NVIDIA公司在1999年发布GeForce256图形处理芯片时首先提出GP ...

  7. zz神经网络模型量化方法简介

    神经网络模型量化方法简介 https://chenrudan.github.io/blog/2018/10/02/networkquantization.html 2018-10-02 本文主要梳理了 ...

  8. python学习--大数据与科学计算第三方库简介

    大数据与科学计算  库名称 简介 pycuda/opencl GPU高性能并发计算 Pandas python实现的类似R语言的数据统计.分析平台.基于NumPy和Matplotlib开发的,主要用于 ...

  9. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

随机推荐

  1. Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    引用自 :http://www.2cto.com/database/201307/224836.html   Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 先假设有这么一个表 ...

  2. jsp七大动作指令

    jsp 七大动作指令 1) jsp:include 指令 用于在请求处理阶段包含来自一个Servlet或jsp页面的响应.和编译指令中的include不同,include只能用于包含静态页面,而jsp ...

  3. POI格式化Cell样式

    通过一个实例演示怎样通过POI设置Excel单元格的边框.字体.颜色.大小.下划线.合并.对齐方式. Excel文件如下: Java代码   package my.excel;       impor ...

  4. [读书笔记]项目管理实战:Microsoft Project精髓与方法

    <项目管理实战:Microsoft Project精髓与方法>是Bonnie Biafore 写的一本书.Bonnie Biafore 作为项目管理师(PMP),她有20余年为大中小型客户 ...

  5. Python装饰器与面向切面编程

    今天来讨论一下装饰器.装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数 ...

  6. 【翻译】口袋妖怪X/Y 制作技法

    口袋妖怪X/Y [口袋妖怪]系列最终的全3D化     再现图像风格的制作技法   完成系列最初的全3D化的本作,在手掌游戏机的性能和容量的限制中,把杉森建氏的公式设定图风格用Toon Shading ...

  7. Unix时间戳(Unix timestamp)转换工具

    http://tool.chinaz.com/Tools/unixtime.aspx 现在的Unix时间戳(Unix timestamp)是   1440732364         Unix时间戳( ...

  8. laravel 外键schema RBAC

    $table->bigIncrements('id')  ;   Incrementing ID (primary key) using a " UNSIGNED BIG INTEGE ...

  9. Nginx 上的 php-fpm 资源侵占问题

    测试人员向我们反映:在Facebook平台的游戏比其它平台的游戏明显更慢.我询问,是不是因为FQ网络原因.他们说:不是,其它游戏也比较流畅.使用httpwatch查看了http请求,发现api.php ...

  10. Java 特殊性领会

    1. 字符串比较绝对不能用 == 而必须是 xx.equals() 2. 多有对象new 后都是以引用的方式存在着 3. 数组list, map 类型都不能边用for 循环边删除,迭代器可以 eg: ...