MPI并行编程      报告人:李俊照.

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

我国国有银行 资本构成及资本充足率变化 小组成员:金融 尹佳裕 王淼 刘钰 金融 吴昱.
1 認識創業之財務 ( 資金 ) 及稅務問題 講師 : 蘇炳章 日期 : 92 年 8 月 12 日.
C enter of C omputational C hemistry 并行计算机与并行计算 张鑫 理论与计算化学国际合作研究中心 分子反应动力学国家重点实验室.
五年制精神医学本科生培养方案 刘哲宁 教授. 专业简介  精神医学是临床医学的一个重要分支,它是研究人 类精神活动的规律、防治精神疾病的一门重要学科。  掌握健康与疾病的概念。
© 2001 孟静制作 版权所有 第二章 CPU 管理和进程、线程管理 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析 :UNIX 早期版本的 CPU 管理 子系统 ( 进程模型 ) 2.4 处理机管理实例分析 (2):linux CPU 管理(进程 模型) 2.5 线程模型.
第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
工程學群 — 土木工程學類 組員 : 王文傑、黃千晏、陳識文. 目錄 一.由來 二.定義 三.相關學系介紹 & 學系開設大學 四.未來出路 五.學測篩選標準 & 最低錄取分數 六.指考篩選標準 & 最低錄取分數 七.校與校所學比較 八.土木 & 建築系比較 九.參考資料.
职业指导服务系统 欢迎了解职业指导服务系统!
PC DIY達人培訓班 主辦單位:東海高中資訊科 報告人:李宏傑.
辅导老师:隋秀峰 2008年10月22日 Lab3:MPI Programming 辅导老师:隋秀峰 2008年10月22日.
南山中學 102學年度 性別平等教育週性別教育 性騷擾防治.
新約研讀 彼得前書複習 讀經組
性教育教學模組設計 主題:身體自主權 台中市忠明國小 巫偉鈴.
課程地圖 (104年入學-日間部) 校通識核心 專業課程 必修與選修 與管理模組 網路技術 App設計與應用模組 學院通識核心 學院專業核心
高齡自主學習團體終身學習試辦計畫經費核銷
第6章 计算机网络基础 信息技术基础.
整体销售方案 中山市美好物业代理有限公司
郎显宇 中国科学院计算机网络信息中心 超级计算中心
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
第1单元 操作系统概论 第一节 绪论 操作系统定义.
一百零一年溪口國小 學校日 班級: 三年三班 教師: 張慈麟.
臺中市頭家國小 生理衛生講座 青春期的奧秘 ‧說到青春期,你會想到? ‧班級表現最好的,有獎徵答有優先權。 葉孟娟老師、黃文玲老師.
台北縣98年三鶯區語文研習 --建國國小 修辭與標點符號 福和國中廖惠貞
廉政會報專題報告 農地重劃工程 施工常見缺失 報告:吳東霖 製作:張昌鈴 日期:103年12月23日.
有三件事我很確定: 第一、愛德華是吸血鬼 第二、出於天性,他渴望喝我的血 第三、我無可救藥地愛上他了……
提高自身素质做好 新时期班主任工作 北京市广渠门中学 高金英.
关注热点 2014年天猫双十一成交总额 571亿 点亮217个国家地区
人力资源市场统计工作介绍 人力资源市场与人员调配处 郭俊霞 2014年12月.
普通话模拟测试 与学习平台 使用指南.
香港普通話研習社科技創意小學 周順強老師.
第九章日治時期的台灣(下).
操作系统原理 Principles of Operating System
你,是扼殺 孩子競爭力的幫兇嗎?.
網路小說劇情建構與伏線營造 Windows98.
1. 民主社會裡,公民的參與有其重要性,而透過政治參與無法達成下列哪一項目的?
高等职业学校建筑设计类与艺术设计类专业骨干教师实践能力国家级培训
營建自動化 -營建管理資訊化 授課老師:劉俊杰 副教授 中華民國89年9月27日.
臺南市103年國中小主任儲訓班 工程採購實務經驗分享 臺南市東區德高國民小學 總務主任李興鎵.
8.1 系統軟件、應用軟件和驅動程序 電腦軟件 是使電腦處理指定工作的一連串指令 大致可分大為三類: 驅動程序 系統軟件 應用軟件.
金門縣重大空難應變機制-消防局 壹、消防搶救、滅火、緊急救護 一、派遣作為:
没有请柬该如何办 记者如何选取有利位置 着装 准备工作 提问时的注意事项
大陸產業分析 課程說明會.
关于整合检验检测认证机构实施意见的通知(国办发〔2014〕8号)
3.1能源资源的开发 ——以我国山西省为例.
焦 虑 症.
推进德育创新 做好新时期班主任工作 北京市广渠门中学 高金英.
“服务器服务于Internet”报告会 倪光南 1999年7月6日
公務員廉政倫理規範.
組 員: 王 新 惠 吳 映 暄 李 盈 慧 廖 香 涵 盧 姵 華 訪談日期:
作業系統的結構 日期 : 2018/9/17.
MPI并行程序设计简介 曙光信息产业(北京)有限公司 2018年11月.
物流信息技术 Logistics Information Technology
并行算法实践.
第四讲 MPI并行程序设计 课程网站:CourseGrading buaa.edu.cn 主讲教师: 赵长海
并行计算.
基于MPI的并行程序设计 王振海 西北工业大学理学院 西北工业大学高性能计算研究与发展中心 2018/11/28.
第一章 線性方程組.
作業系統 (Operating System)
计算机系统结构 第一章 基本概念 第二章 指令系统 第三章 存储系统 第四章 输入输出系统** 第五章 标量处理机 第六章 向量处理机
并行计算简介 高性能事业部:曹振南 年4月.
南瑞学堂 学员简明操作指南 上海时代光华教育发展有限公司 2013年.
黄土高原的水土流失 标题 水土流失的原因 水土流失的危害 治理措施 参考文献 小组成员.
使用服务平台办理离校 操作指南.
藝術大師-達利.
組員:.
方格紙上畫正方形.
厉害了,我的国! 15会计2班团支部 2018年4月20日.
 主講人:楊文明主任委員   106/06/30 中華電信職工福利委員會台北分會業務簡介.
Presentation transcript:

MPI并行编程      报告人:李俊照

内容 1、MPI并行编程简介 2、efund并行的结果分析 3、主程序的并行思路

几种我们常见的并行计算机 … … … 虚拟分布共享存储(DSM) CPU LM 总线或交叉开关 定制网络 SM CPU (a) SMP, 物理上单一地址空间 CPU … 定制网络 LM 虚拟分布共享存储(DSM) (b) DSM, 逻辑上单一地址空间 P/C … 定制/标准网络 LM (c) Cluster, 物理/逻辑上多地址空间

什么是并行计算 传统的串行计算,分为“指令” 和“数据”两个部分,并在程序 执行时“独立地申请和占有”内 存空间,且所有计算均局限于 进程 1 进程 2 传统的串行计算,分为“指令” 和“数据”两个部分,并在程序 执行时“独立地申请和占有”内 存空间,且所有计算均局限于 该内存空间。 并行计算将进程相对独立的 分配于不同的节点上,由 各自独立的操作系统调度, 享有独立的CPU和内存资源 (内存可以共享);进程间 相互信息交换通过消息传递; 进程 1 发送信息 进程 2 接收信息

MPI(Message Passing Interface) 在当前所有的消息传递软件中, 最重要最流行的是MPI, 它能运行在所有的并行平台上, 包括SMP和PVP. 二者已经在Windows NT 和Windows 9X这样的非Unix平台上实现. 程序设计语言支持C, Fortran和Java.在国产的三大并行机系列神威、银河和曙光上都实现了对MPI和支持. MPI已经成为一种标准,应用越来越广泛。而最流行的MPI工具集当属mpich,是目前高效率的超大规模并行计算(1000个处理器)最可信赖的平台。 目标: 是提供一个实际可用的、可移植的、高效的和灵活的消息传递 接口标准. MPI以语言独立的形式来定义这个接口库, 并提供了与C、 Fortran和Java语言的绑定. 这个定义不包含任何专用于某个特别的 制造商、操作系统或硬件的特性. 由于这个原因, MPI在并行计算界 被广泛地接受.

MPI并行进程的实现 MPI并行程序设计平台由标准消息传递函数及相关辅助函数构成,多个进程通过调用这些函数(类似调用子程序),进行通信; 一个程序同时启动多份,形成多个独立的进程, 在不同的处理机上运行,拥有独立的内存空间, 进程间通信通过调用MPI函数来实现;每个进程 开始执行时,将获得一个唯一的序号(rank)。 例如启动P个进程,序号依次为0,1,…,P-1;

消息传递是相对于进程间通信方式而言的,与具体并行机存储模式无关, 任何支持进程间通信的并行机,均可支持消息传递并行程序设计;几乎 有共享和分布存储并行计算环境均支持进程间的消息传递通信; 进程0发送一个整数给进程1;进程1将该数加1,传递给进程2;进程2再将 该数加1,再传递给进程3;依次类推,最后,进程N-1将该数传递给进程0, 由进程1负责广播该数给所有进程,并打印输出。 进程 1 传递信息 进程 3 进程 2 进程 0

MPI并行编程简介 主/从式  主进程将任务分发到从进程分别计算,再收集计算结果,比如计算1+…+100,可以分成两部份。进从程计算1+..+50和51+..+100,主进程收集结果再相加

对等式 每个进程相对独立计算各自的任务 比如要计算1+…+100和1*…*100,可以由两个进程独立计算

混合模式 主进程分发完任务后,参与计算 如计算1+..+100,主进程可以自己计算1..33,分发任务34..66和67..100到两个从进程。可以提高效率

一个简单的MPI程序 include 'mpif.h‘ integer myid,numprocs,ierr,rc call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD,myid,ierr) call MPI_Comm_size(MPI_COMM_WORLD,numprocs,ierr) //添加需要并行的程序 Write(*,*) "Hello World! process is :",myid // call MPI_Finalize(rc)

运行的结果

MPI初始化 MPI结束 call MPI_Init(ierr) Integer ierr call MPI_Finalize(ierr)

当前进程标识 通信域包含的进程数 call MPI_Comm_rank(MPI_COMM_WORLD,myid,ierr) In MPI_COMM_WORLD 为进程所在的通信域 Out Integer myid,ierr 通信域包含的进程数 Call MPI_Comm_size(MPI_COMM_WORLD,numprocs,ierr) In MPI_COMM_WORLD Out Integer numprocs,ierr

通信域 一个通信域是一个进程组加上一个现场,进程组是所有参加通信的进程的集合,如果一共有N个进程参加通信,则进程编号从0到N-1;现场提供一个相对独立的通信区域 6 1 3 7 5 11 9 4 10 2 8 1 1 5 3 5 3 4 4 2 2

MPI消息 MPI消息包括信封和数据两部份 信封:<源/目,标识,通信域> 数据:<起始地址,数据个数,数据类型> MPI_Send(buf,count,datatype,dest,tag,comm)   消息数据     消息信封 In buf,count,datatype,dest,tag,comm

MPI_Recv(buf,count,datatype,source,tag,comm,status) 消息接收 MPI_Recv(buf,count,datatype,source,tag,comm,status) In count,datatype,source,tag,comm Out buf,status(返回状态) MPI类型匹配:数据类型要一致  数据发送缓冲区 数据接收缓冲区 消息装配 消息拆卸 消息传递

阻塞通信与非阻塞通信 阻塞消息发送与接收 阻塞发送 阻塞接收 开始 开始 消息成功发出 消息成功接收 结束 结束 缓冲区数据可使用 阻塞通信与非阻塞通信   阻塞发送 阻塞接收 开始 开始 消息成功发出 消息成功接收 结束 结束 缓冲区数据可使用 缓冲区可释放 阻塞消息发送与接收

非阻塞发送 非阻塞接收 启动发送 启动接收 发 送 消 息 接 收 消 息 立即返回 立即返回 计算 与 通信 重叠 计 算 计 算 通信完成 通信完成 释放发送缓冲区 引用接收数据 非阻塞消息发送与接收

非阻塞消息发送 非阻塞消息接收 非阻塞通信的完成 MPI_ISend(buf,count,datatype,dest,tag,comm,request,ierr) In buf,count,datatype,dest,tag,comm Out request,ierr Request(返回的非阻塞通信对象) 非阻塞消息接收 MPI_IRecv(buf,count,datatype,source,tag,comm,request,ierr) In buf,count,datatype,source,tag,comm 非阻塞通信的完成 MPI_Wait(request,status) In request Out status

组通信 一对一 MPI_Send MPI_Recv MPI_ISend MPI_IRecv 一对多 广播 MPI_Bcast 收集 多对一 MPI_Gather 多对一 多对多

编写安全的通信 If (rank.eq.0) then Call MPI_Recv(recvbuf,count,real,1,tag,comm,status,ierr) Call MPI_Rend(sendbuf,count,real,1,tag,comm,ierr) Else if (rank.eq.1) Call MPI_Recv(recvbuf,count,real,0,tag,comm,status,ierr) Call MPI_Rend(sendbuf,count,real,0,tag,comm,ierr) Endif 进程0 进程1 从进程1接收消息A 从进程0接收消息B 向进程1发送消息B 向进程1发送消息A 产生死锁的通信调用

例子 令: 则有:

4 1

Myid:本身进程号 Numprocs:总的进程数 For(I=myid+1;I<=n;I+=numprocs) /*每一个进程计算一部份矩形的面积,若进程总数为4, 将0-1区间为100个矩形 0进程:1,5,9,13,…,97 1进程:2,6,10,14,…,98 2进程:3,7,11,15,…,99 3进程:4,8,12,16,…,100 */ 然后0进程汇总数据

efund并行的结果分析 开始 getset matrix grid 结束 读入参数 计算并生成fcfcpc.dat 计算并生成rfcoil.dat matrix 计算并生成eplasm.dat grid 计算并生成econto.dat 结束

采用对等模式进行MPI程序设计 结束 开始 计算 程序的运行时间由耗时最长的进程决定

在linux集群上用4个节点运行所需要的时间 线程 计算 运行时间 运行时间 运行时间  0 fcfcpc.dat 0.230 0.210 0.230  1 rfcoil.dat 1.240 1.190 1.240 1.410  2 eplasm.dat 1.380 1.520  3 econto.dat 0.370 0.390 0.350 串行程序的时间 时间单位:秒 6.780 6.840 6.960

取时间平均值,则并行时间:1.437s 串行时间:6.860s 加速比为:6.860/1.437=4.77 效率为:4.77/4=1.19 加速比一般不会超过处理器个数,efund的并行加速比 大于处理器个数,不知什么原因

主程序的并行思路 可扩展的 先粗颗粒度,再细颗粒度

 谢 谢!