MPI编程基础 - 中国科学院海洋研究所高性能计算中心.PPT

MPI编程基础 - 中国科学院海洋研究所高性能计算中心.PPT

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MPI编程基础 - 中国科学院海洋研究所高性能计算中心

提纲 并行计算 MPI预备知识 MPI系统环境管理 点对点通讯 聚合通讯 并行计算 并行计算是指,在并行机上,将一个应用分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,并行地执行子任务,达到加速求解效果,或者求解大规模应用问题的目的。 共享存储 均匀访存(UMA:Uniform Memory Access) 内存与结点分离,存储为所有结点共享 所有结点任意访问存储单元,且时间相同 访存竞争时,仲裁策略平等对待每个处理器 各处理器带有局部高速缓存cache 单一的操作系统映象 共享存储 非均匀访存(NUMA: Non-uniform Memory Access) 内存模块局部在各个结点内,所有局部内存构成全局内存 所有结点任意访问各存储单元,但速度和时间不等 访存竞争时,仲裁策略对待每个处理器可能不等价 各处理器带有局部高速缓存cache,以及保持缓存一致性的协议,此又称cache一致性的非均匀存储——ccNUMA 单一操作系统映象 分布式存储 内存模块物理分布同前,每个结点拥有局部内存模块 各结点存储模块只能被局部CPU访问 访问其他结点内存,可通过消息传递实现 各结点拥有不同的操作系统映象 结点内和结点间的互连通常都有特殊的技术来提高通讯速度,其操作系统不是开放的,而是制造者专有 混和存储 结点内部是共享存储模型 结点间是分布式存储模型 各结点拥有不同的操作系统映象 并行编程 共享存储系统 (SMP, DSM) OpenMP 消息传递接口 分布式存储系统 (MPP) 消息传递接口 混合式存储系统 消息传递接口 MPI+OpenMP混合编程 提纲 并行计算 MPI预备知识 MPI系统环境管理 点对点通讯 聚合通讯 Message Passing Interface 什么是MPI (Message Passing Interface) 是函数库规范,而不是并行语言;操作如同库函数调用 是一种标准和规范,而非某个对它的具体实现(MPICH等),与编程语言无关 是一种消息传递编程模型,并成为这类编程模型的代表 什么是消息(message)? DATA+ENVELOPE MPI编程 MPI编程 头文件: MPI函数调用: 编译与运行 程序编译 C: mpicc -o mpiprog mpisrc.c Fortran 77: mpif77 -o mpiprog mpisrc.f90 程序运行 mpirun -np 4 ./mpiprog 程序流程 进程与线程 进程与线程 进程 单个进程(process) 进程与程序相联,程序一旦在操作系统中运行即成为进程。进程拥有独立的执行环境(内存、寄存器、程序计数器等),是操作系统中独立存在的可执行的基本程序单位 串行应用程序编译形成的可执行代码,分为“指令”和“数据”两个部分,并在程序执行时“独立地申请和占有”内存空间,且所有计算均局限于该内存空间。 进程 包含于通过网络联接的不同处理器的多个进程 进程独立存在,并位于不同的处理器,由各自独立的操作系统调度,享有独立的CPU和内存资源 进程间相互信息交换,可依靠消息传递 最基本的消息传递操作包括发送消息send、接受消息receive、进程同步barrier、归约reduction等 提纲 并行计算 MPI预备知识 MPI系统环境管理 点对点通讯 聚合通讯 初始化MPI系统 C: int MPI_Init(int *argc, char *argv[]) Fortran 77: MPI_INIT(IERROR) INTEGER IERROR 通常为第一个调用的MPI函数,除MPI_Initialized外 只被调用一次 在C接口中,MPI系统通过argc和argv得到命令行参数 获取进程数和标号 C: int MPI_Comm_size(MPI_Comm comm, int *size) int MPI_Comm_rank(MPI_Comm comm, int *rank) Fortran 77: MPI_COMM_SIZE(COMM, SIZE, IERROR) MPI_COMM_RANK(COMM, RANK, IERROR) INTEGER COMM, SIZE, RANK, IERROR 退出MPI系统 C: int MPI_Finalize(void) Fortran 77: MPI_FINALIZE(IERROR) 每个进程都必须调用,使用后不准许调用任何MPI函数 若不执行MPI退出函数,进程可能被悬挂 用户在调用该函数前,应确保非阻塞通讯结束 异常终止MPI程序 C: int MPI_Abort(MPI_Comm comm, int errorcode) Fortran 77: MP

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档