并行计算机与并行计算
并行计算基本条件
- 硬件(并行机)
- 并行编程环境
- 并行算法设计
并行计算主要目标
- 提高求解速度
- 扩大问题规模
- 减低成本
并行主要方法
- 任务分解
- 功能分解
- 区域分解
并行计算机
- SIMD型并行计算机(Single Instruction Multi-Data)
- 同时支持标量指令和向量指令
- MIMD并行计算机
- 多指令流多数据流
- 单一的共享地址空间
- 存储访问成为性能瓶颈
- 典型:SMP
- SMP Symmetrical Multi-Processing: 在一个计算机上汇集一组处理器,共享内存等资源,由单一操作系统管理
- SIMD适合开发细粒度的数据并行任务,MIMD适合粗粒度的任务并行
- 分布存储多计算机
- 松散耦合多机系统
- 节点独立(可有局部存储、IO设备等)
- 多地址空间
- 易于扩展
- 难于编程
- 消息传递通信接口
- 分布共享存储多处理器(Distributed Shared Memory DSM)
- 将物理上分布的存储系统,通过硬件和软件的办法,向用户提供一个单一的全局地址空间
- 处理器: 每个结点有一个或多个CPU
- 分布式存储:每个结点中有存储模块
- 网络:专用的高性能互联网络连接(Myrinet, Infiniband, …)
- 单一的操作系统
- 单一的内存地址空间:所有内存模块都由硬件进行了统一的编址,各个结点既可以直接访问局部内存单元,又可以直接访问其他结点的局部内存单元
- 可扩展到上百个结点
- 支持消息传递、共享存储并行程序设计
- MPP Masively Parallel Processing
- 每个节点有自己的操作系统,内存,一个或多个微处理器
- 集群NOW Network of Workstations或者COW Cluster of Workstations
- 每个结点都是一个完整的工作站,有独立的硬盘与操作系统
- 结点间通过低成本的通用网络(如千兆以太网)连接
- 与MPP 之间的界线越来越模糊
并行计算软件环境
- 操作系统与编程语言
- 并行计算机主流操作系统:UNIX/Linux/Windows
- 编程语言
- Fortran 77/90/95
- C/C++
- 其他
-
三种常见的并行编程环境:
-
消息传递 MPI PVM
- MPI提供了更多更高效的通信函数
- PVM提供了更灵活的功能,如虚拟机的配置,任务的映射等。
-
共享存储 OpenMP
- 不是一门新的语言,是对基本语言的扩展。
- 支持C语言、C++和Fortran;
- 源代码中加入专用的pragma,编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。
- 当选择忽略这些pragma,或者编译器不支持OpenMP时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行。
- 数据并行 HPF
- 扩展自Fortran 90,它以数据并行的方式工作,使运算工作能够进行分拆,并以扩散方式发派到运算阵列中的各颗处理器上,以此达到高效能运算。
并行计算效率
Amdahl’s law
- P个处理器,一般而言最大的加速比为p。通常达不到。(考虑到通信开销,任务的分拆,合并等)
- 如果加速比为p,称为线性加速比。
- 偶尔会出现超线性加速比
- 串行算法不合理
- 特别有利于进行并行计算的独特的结构
- 算法的不确定性。随机性。
- 更多的内存。
- 限制加速的因素:
- 一些处理器处于闲置状态
- 出现了额外的计算
- 进程间的通信时间。
-