第1页共39页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共39页国家973项目高性能计算环境支持讲座MPI与PETSc莫则尧(北京应用物理与计算数学研究所)日期内容8.15上午进程与消息传递、MPI应用现状、MPI并行程序设计入门、初步的MPI消息传递函数下午作业一、讨论8.16上午作业一讲评、先进的MPI函数、并行程序示例2、MPI的发展下午作业二、讨论8.17上午作业二讲评、并行可扩展科学计算工具箱PETSc介绍第2页共39页第1页共39页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共39页下午PETSc程序示例第3页共39页第2页共39页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共39页个人介绍莫则尧,男,汉族,1971年7月生,副研究员:1992年国防科技大学应用数学专业本科毕业;1997年国防科技大学计算机应用专业并行算法方向博士毕业;1999年北京应用物理与计算数学数学博士后流动站出站,并留所工作;主要从事大规模科学与工程并行计算研究。第4页共39页第3页共39页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共39页消息传递并行编程环境MPI一、进程与消息传递二、MPI环境的应用现状三、MPI并行程序设计入门(程序例1)四、初步的MPI消息传递函数五、作业一六、先进的MPI函数七、MPI并行程序示例2(求解-u=f);八、MPI环境的发展九、作业二第5页共39页第4页共39页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第5页共39页一、进程与消息传递1.单个进程(process)进程是一个程序,同时包含它的执行环境(内存、寄存器、程序计数器等),是操作系统中独立存在的可执行的基本程序单位;通俗理解:串行应用程序编译形成的可执行代码,分为“指令”和“数据”两个部分,并在程序执行时“独立地申请和占有”内存空间,且所有计算均局限于该内存空间。2.单机内多个进程:多个进程可以同时存在于单机内同一操作系统:由操作系统负责调度分时共享处理机资源(CPU、内存、存储、外设等);进程间相互独立(内存空间不相交):在操作系统调度下各自独立地运行,例如多个串行应用程序在同一台计算机中运行;进程间可以相互交换信息:例如数据交换、同步等待,消息是这些交换信息的基本单位,消息传递是进程1进程2内存第6页共39页第5页共39页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第6页共39页指这些信息在进程间的相互交换,是实现进程间通信的唯一方式;最基本的消息传递操作:发送消息(send)、接受消息(receive)、进程同步(barrier)、规约(reduction);消息传递的实现:共享内存或信号量,用户不必关心;进程1进程2发送数据接收数据(消息传递)内存空间3.包含于通过网络联接的不同计算机的多个进程:进程独立存在:进程位于不同的计算机,由各自独立的操作系统调度,享有独立的CPU和内存资源;进程间相互信息交换:消息传递;消息传递的实现:基于网络socket机制,用户不必关心;4.消息传递库函数:第7页共39页第6页共39页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第7页共39页应用程序接口(API):提供给应用程序(FORTRAN、C、C++语言)的可直接调用的完成进程间消息传递的某项特定功能的函数;消息传递库:所有定义的消息传递函数编译形成的软件库,调用其内部函数的应用程序,通过与之联接,即可成为可并行执行的程序;目前流行的消息传递函数库:PVM3.3.11、MPICH1.2、LAMMPI6.4等;5.标准消息传递界面(MPI:MessagePassingInterface):MPI标准:根据应用程序对消息传递功能的需求,全球工业、应用和研究部门联合推出标准的消息传递界面函数,不考虑其具体实现,以保证并行应用程序的可移植性;MPI的具体实现:消息传递库函数,目前有影响的为MPICH和LAMMPI,我们注重MPICH系列;第8页共39页第7页共39页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第8页共39页6.基于消息传递的并行程序执行模式:SPMD模式:单程序多数据流可执行代码运行MPMD模...