并行程序设计及ScaLAPACK函数库应用简介

Slides:



Advertisements
Similar presentations
C enter of C omputational C hemistry 并行计算机与并行计算 张鑫 理论与计算化学国际合作研究中心 分子反应动力学国家重点实验室.
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
赵永华 中科院计算机网络信息中心 超级计算中心
数字系统设计及VHDL实践 专题五 专用集成电路 设计中的并行算法 主 讲 人:徐向民 单 位:电子信息学院.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
高性能计算和高性能计算机 赵崇山
国家高技术研究发展计划 香港大学网格节点 Presented by Cho-Li Wang
基于R和pentaho的全套开源BI平台的实现
并行算法实践 上篇 并行程序设计导论.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
MPI并行程序设计简介 曙光信息产业(北京)有限公司 2018年11月.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
第一章 C语言概述.
并行计算实验上机 国家高性能计算中心(合肥).
OpenMP简介和开发教程 广州创龙电子科技有限公司
并行算法实践.
核探测与核电子学国家重点实验室 报告人:董磊 指导老师:宋克柱
Cuda 平行運算機制 報告者:林威辰.
MPI并行编程      报告人:李俊照.
Computer Graphics 计算机图形学基础 张 赐 Mail: CSDN博客地址:
面向对象建模技术 软件工程系 林 琳.
第四讲 MPI并行程序设计 课程网站:CourseGrading buaa.edu.cn 主讲教师: 赵长海
并行计算.
基于MPI的并行程序设计 王振海 西北工业大学理学院 西北工业大学高性能计算研究与发展中心 2018/11/28.
存储系统.
SOA – Experiment 3: Web Services Composition Challenge
走进编程 程序的顺序结构(二).
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
并行算法实践 上篇 并行程序设计导论.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
数据挖掘工具性能比较.
动态规划(Dynamic Programming)
CPU结构和功能.
并行计算简介 高性能事业部:曹振南 年4月.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
十二、并行程序设计基础.
分布式程序设计 姚斌 计算机科学与工程系 上海交通大学.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
程序设计工具实习 Software Program Tool
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
微机系统的组成.
VisComposer 2019/4/17.
OpenMP程序设计 2019/4/25.
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
Touch Github = Touch the World
线性代数 第十一讲 分块矩阵.
建模常见问题MATLAB求解  .
Parallel Programming Xuanhua Shi/Pingpeng Yuan
临界区问题的硬件指令解决方案 (Synchronization Hardware)
OpenStack vs CloudStack
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
线 性 代 数 厦门大学线性代数教学组 2019年5月12日4时19分 / 45.
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
§2 方阵的特征值与特征向量.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
GPU实验上机介绍 国家高性能计算中心(合肥).
滤波减速器的体积优化 仵凡 Advanced Design Group.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
教学大纲(甲型,54学时 ) 教学大纲(乙型, 36学时 )
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
Presentation transcript:

并行程序设计及ScaLAPACK函数库应用简介 报告人:罗正平 导师:肖炳甲研究员 Report for Friday Symposium (1/29/2010) 2017/9/11

并行计算--高性能计算 并行计算(Parallel Computing) 是指在并行计算机上,将一个应用分解成多个子任务,分配给不同处理器,各个处理器之间相互协同,并行地执行子任务,从而达到加快求解的速度或提高求解应用问题规模的目的。 高性能计算(High Performance Computing,HPC) 超级计算(Super Computing) 2017/9/11

为什么需要并行计算机 问题: 科学和工程问题的数值模拟与仿真 计算密集 数据密集 网络密集 三种混合 要求:在合理的时限内完成计算任务 秒级 制造业 分钟级 短时天气预报(当天) 小时级 中期天气预报(3~10日) 尽可能快 长期天气预报(气候) 可计算湍流模拟 2017/9/11

并行计算的基本条件 并行计算机 应用问题必须具有并行度 并行编程 2017/9/11

并行计算机 由多个计算单元组成,运算速度快、存储容量大、可靠性高的计算机系统。 也称巨型机或超级计算机。 Roadrunner 1.026PetaFlops 本页图片是IBM的最新军用超级计算机“Roadrunner”,每秒计算能力达到了1.026PetaFlops,是目前最强的 IBM BlueGene/L的两倍还多。Roadrunner一共拥有116640颗计算核心,由三种不同的处理器组成,包括12960颗改进版的IBM Cell,以及少量的AMD Opteron。Roadrunner超级计算机的布线总长达到了57公里,功率为3.9兆瓦,占地约6000平方英尺,总重超过500000磅。由IBM和洛斯阿拉莫斯(Los Alamos)国家实验室技术人员共同开发和组装。其计算能力形象的描述是:如果全球60亿人每人都拿上一台手持计算器,然后一天24小时不停地计算,如此不停地继续工作64年,其总工作量仅相当于Roadrunner一天的工作量。(美国能源部下属国家核安全管理局(NNSA)局长托马斯·阿戈蒂诺(Thomas Agostino) ) 2017/9/11

并行计算机体系结构 对称多处理机SMP(Symmetric Multiprocessor) 分布式共享存储并行计算机DSM(Distributed Shared Memory) 大规模并行计算机MPP(Massively Parallel Processing) 2017/9/11

机群系统(cluster) 每个结点都是一个完整的计算机;每个结点包含数个微处理器,结点 内部采取共享存储 各个结点之间由高性能互联网络链接 网络接口和I/O总线松耦合链接 每个结点都有完整的操作系统 2017/9/11

Cluster based on SMP -- MPP IBM刀片机群(HS21) Cluster based on SMP -- MPP 2017/9/11

并行程序开发策略 应用问题的并行度,也就是应用问题可以分解为多个可并行执行的子任务。 现有的串行源代码 有目的稍许修改源代码 自动并行化 并行应用程序 (a)自动并行化 开发并行库 重新链接 (b)并行库 作重大修改 编译器支持并行化 (c)重新编写并行代码 2017/9/11

并行程序设计 共享变量模型(Shared Variable) 消息传递模型(Message Passing) 2017/9/11

共享变量(Shared Variable) OpenMP OpenMP是基于线程的并行编程模型,使用Fork-Join并行执行模型。所有的OpenMP程序开始于一个单独的主线程,主线程串行执行直到遇到并行域才开始并行执行。 所有的OpenMP并行化,都是通过使用嵌入到C/C++或Fortran源代码中的编译制导语句来达到的。 Fork Join 主线程 并行域 #include “omp.h” int main(int argc, char* argv[]) { int nthreads, tid; int nprocs; char buf[32]; /* Fork a team of threads */ # pragma omp parallel private(nthreds,tid) /* Obtain and print thread id */ tid=omp_get_thread_num(); printf(“Hello World from OMP thread %d\n”,tid); /* Only master thread does this */ if(tip==0){ nthreads=omp_get_num_threads(); printf(“Number of threads %d\n”,nthreads); } } return 0; 2017/9/11

消息传递(Data Parallel) MPI 互连网络 …… Include “mpif.h” 其他参数说明 Call MPI_Init() Call MPI_Comm_rank() Call MPI_Comm_size() 建立进程拓扑结构和新的通信器 应用程序体: 1.计算控制程序体; 2.进程间通信。 Call MPI_Finalize() end P/M 互连网络 MPI …… 基于MPI的并行程序,是有一个或多个彼此通过调用库函数进行消息收发通信的进程所组成。 绝大部分MPI实现中,一组固定的进程在程序初始化时生成,可以执行SPMD或MPMD模式。 2017/9/11

MPI 数据交换 进入MPI系统 2017/9/11 退出MPI系统 MPI函数 进程0 进程1 进程2 进程3 init() program example1 include “mpif.h” !! MPI系统头文件 integer status(MPI_STATUS_SIZE),my_rank,p,source,dest,tag,ierr,data c-------进入MPI系统 call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD,my_rank,ierr) call MPI_Comm_size(MPI_COMM_WORLD,p,ierr) c-------数据交换 data=0 tag= 5 source= my_rank-1 if(source.eq.-1) source=p-1 dest =my_rank+1 if(dest.eq.p) dest=0 if(my_rank.eq.0) then call MPI_Send(data,1,MPI_INTEGER,dest,tag,MPI_COMM_WORLD,ierr) call MPI_Recv(data,1,MPI_INTEGER,source,tag,MPI_COMM_WORLD,status,ierr) else data=data+1 endif c-------广播数据 call MPI_Bcast(data,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr) c------打印输出 if(data.eq.p-1) then print *,”Successful, data=”,data print *,”Failure, data=”,data call MPI_Finalize(ierr) end init() 进入MPI系统 comm_rank() myrank=0 myrank=1 myrank=2 myrank=3 comm_size() p=4 p=4 p=4 p=4 data=0 data=0 data=0 data=0 source=3 source=0 source=1 source=2 dest=1 dest=2 dest=3 dest=0 数据交换 send() recv() recv() recv() recv() data=data+1 Example1:进程0发送一个整数data给进程1;进程1将该数加1后传递给进程2;进程2加1后将该数传递给进程3;以此类推,最后进程p-1将该数传递给进程0,由进程0负责广播给所有进程,并由进程0负责打印输出。 此处以P=4为例实现。 send() data=data+1 send() data=data+1 send() broadcast() send() recv() recv() recv() output “data” 2017/9/11 退出MPI系统 finalize()

ScaLAPACK 并行库开发高性能计算程序基本思想: 并行函数库提供经过优化的通用并行算法代码,用户只需根据需要调用相应函数就可编写并行程序。 ScaLAPACK (Scalable LAPACK)是LAPACK在分布式计算环境中的扩展,主要运行在基于分布式存储和消息传递机制的MIMD计算机以及支持PVM或MPI的集群上。 2017/9/11

ScaLAPACK层次结构 BLAS: Basic Linear Algebra Subprograms PBLAS: Parallel Basic Linear Algebra Subprograms BLACS: Basic Linear Algebra Communication Subprograms LAPACK: Linear Algebra PACKage ScaLAPACK: Scalable Linear AlgebraPACKage 2017/9/11

BLAS简介 BLAS是一组高质量的基本向量矩阵运算子程序。其从结构上分成3部分: Level 1 BLAS: 向量和向量,向量和标量之间的运算; Level 2 BLAS: 向量和矩阵间的运算; Level 3 BLAS:矩阵和矩阵之间的运算。 BLAS支持四种浮点格式运算:单精度实数(REAL)、双精度实数(DOUBLE)、单精度复数(COMPLEX)和双精度复数(COMPLEX*16)。对应子程序的首字母分别为S、D、C和Z。 1. BLAS的主要贡献是将高性能代数计算程序的开发同针对特定机器的性能优化独立开来:代数算法程序的开发者只需运用适当的分块技术将计算程序变成矩阵向量的基本运算并调用相应的BLAS子程序,而不必考虑与计算机体系结构相关的性能优化问题(非常繁杂)。 2. BLAS中除了正文提到的三个部分外,还包括一个辅助子程序XERBLA,用于打印错误信息。 3. 在优化BLAS库中,层次越高的子程序性能改善越大;在使用BLAS库的一个基本原则是:尽可能地使用Level 3 BLAS中的子程序,其次才是Level 2 BLAS。 2017/9/11

LAPACK简介 LAPACK是建立在BLAS库基础上的线性代数函数库。包含了求解科学与工程计算中常见的数值线性代数计算问题,如线性方程组、线性最小二乘问题、特征值问题和奇异值问题等。还可以实现矩阵分解和条件数估计等相关计算。 LAPACK子程序可以分成3类: (1)驱动程序(driver routines):用于解决一个完整问题,如线性方程组求解; (2)计算程序(computional routines):也叫做简单LAPACK子程序,用以完成一个特定的计算任务,如矩阵的LU分解; (3)辅助程序(auxiliary routines):是被驱动程序和计算程序调用的子程序。主要完成对子块的操作和一些常用的底层计算,如计算矩阵范数等。 LAPACK最初目标是在共享存储向量并行计算机上高效地使用EISPACK和LINPACK。而LINPACK和EISPACK忽视微处理器的多层存储结构,以向量操作的形式调用Level 1 BLAS中的子程序完成基本运算,效率低下。LAPACK对矩阵进行分块,通过分块将许多操作转化为矩阵计算,主要是矩阵乘法,可以直接调用Level 3 BLAS子程序,大大提高计算效率。 2017/9/11

BLACS简介 BLACS是为线性代数设计的消息传递函数库。计算模型由一个一维或二维进程网格构成,每个进程存储矩阵和向量的一些片断。 BLACS是建立在PVM或MPI等底层消息传递函数库基础上的,其目标是为通信提供专用于线性代数的可移植层。 1 2 3 Processor ID, row numbering and column numbering all begin with 0 Have chosen to insert the processors into the grid “by-row” Example: processor 6 has grid coordinates (p,q)=(1,2) 1 2 3 4 5 6 7 1 BLACS二维进程网格 2017/9/11

PBLAS简介 PBLAS即并行BLAS,执行消息传递并且其接口与BLAS基本相似。在基于ScaLAPACK函数库的程序中,进程之间的通信出现在PBLAS内部,从而使ScaLAPACK代码与LAPACK代码相当接近,甚至几乎一样,简化程序设计难度。 PBLAS结构上与BLAS一样分成三部分,其子程序名为BLAS子程序名之前加上P,表示并行。 2017/9/11

ScaLAPACK Local:表示本地组件在一个进程中被调用,其参数只存储在一个进程中。 Global:全局组件是同步的并行程序,其参数包括矩阵和向量,分布在多个进程中。 2017/9/11

ScaLAPACK基本步骤 1 1 2 3 1、初始化进程网格; 2、分配数据到进程网格上; 3、调用ScaLAPACK函数; 1 ScaLAPACK基本步骤 1 2 3 1、初始化进程网格; 2、分配数据到进程网格上; 3、调用ScaLAPACK函数; 4、释放进程网格和退出并行应用。 1 1 a11 a12 a21 a22 a13 a14 a23 a24 a15 a25 a31 a32 a41 a42 a33 a34 a43 a44 a35 a45 a51 a52 a53 a54 a55 a11 a12 a15 a21 a22 a25 a51 a52 a55 a13 a14 a23 a24 a53 a54 a31 a32 a35 a41 a42 a45 a33 a34 a43 a44 2-dimension block-cyclic distribution 1 2017/9/11

Example 16*16 16*1 串行:SGEMV -- LAPACK/BLAS SUBROUTINE SGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) SGEMV: y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, 2017/9/11

Example 2 3 16*16 16*1 1 PSGEMV 1-8 9-16 1-8 9-16 1 2017/9/11 1 2 3 16*16 16*1 1-8 9-16 1-8 9-16 1 PSGEMV—PBLAS子程序 Subroutine PSGEMV(Trans,M,N,A,IA,JA,DESCA,X,IX,JX,DESCX,INCX,BETA,Y,IY,JY,DESCY,INCY) PSGEMV 2017/9/11

谢谢 2017/9/11