并行计算简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
并行计算简介
Blaise Barney, 劳伦斯利弗莫尔国家实验室
译者:卢洋,同济大学
原文地址:https:///tutorials/parallel_comp/
目录
1 摘要
2 概述
2.1 什么是并行计算
2.2 为什么使用并行计算
3 概念和术语
3.1 冯诺依曼体系结构
3.2 Flynn经典分类法
3.3 一些通用的并行术语
4 并行计算机存储结构
4.1 共享内存
4.2 分布式内存
4.3 混合型分布式共享内存
5 并行编程模型
5.1 概览
5.2 共享内存模型
5.3 线程模型
5.4 消息传递模型
5.5 数据并行模型
5.6 其他模型
6 设计并行程序
6.1 自动化vs. 手工并行化
6.2 问题的理解和程序
6.3 问题分解
6.4 通信
6.5 同步
6.6 数据依赖
6.7 负载平衡
6.8 粒度
6.9 I/O
6.10 并行程序设计的限制和消耗
6.11 性能分析与调整
7 并行示例
7.1 数组程序
7.2 PI 的计算
7.3 简单的加热等式
7.4 一维的波等式
8 参考和更多信息
1 摘要
为了让新手更加容易熟悉此话题,本教程覆盖了并行计算中比较基础的部分。首先在概述中介绍的是与并行计算相关的术语和概念。然后探索并行存储模型和编程模型这两个话题。之后讨论一些并行程序设计相关的问题。本教程还包含了几个将简单串行化程序并行化的例子。无基础亦可阅读。
2 概述
2.1 什么是并行计算
传统上,一般的软件设计都是串行式计算:
-软件在一台只有一个CPU的电脑上运行;
-问题被分解成离散的指令序列;
-指令被一条接一条的执行;
-在任何时间CPU上最多只有一条指令在运行
图
在最简单的情形下,并行计算是使用多个计算资源去解决可计算问题。
-用多核CPU来运行;
-问题被分解成离散的部分可以被同时解决;
-每一部分被细分成一系列指令;
-每一部分的指令可以在不同的CPU上同时的执行;
-图
计算资源可以包括:
-多核CPU;
-任意数量的CPU用网络连接起来;
-或者以上两者结合;
可计算问题通常展示出如下的特性:
-能分解成可以同时解决的离散的工作块;
-同一时刻可以执行多条程序指令;
-通常用多个计算资源解决问题所花的时间要比单个计算资源要短;
●宇宙是并行的
并行计算是由串行计算发展而来,试图去模仿真实世界中事物的处理过程:许多复杂的互相关联的事件同时发生,例如:
银河系的变换;行星的运动;天气和海洋的变化;
交通堵塞;大陆板块迁移;炊烟升起;
自动的流水线;建造空间飞行器;开车买汉堡;
●并行计算的用途:
在历史上,并行计算被认为是高端计算,并用于为复杂的科学计算和基于真实世界的工程问题建模。下面是一些例子:
-大气层、地球、环境
-物理学应用、核能、原子能、凝聚态、高压、溶解、光电子;
-生物科学、生物工程、基因学
-化学、分子科学
-地理和地震学
-机械工程、从弥补术到空间飞行器
-电气工程、电路设计、微电子学
-计算机科学、数学
今天,商务应用是推动快速计算机发展的更大的推动力。这些应用需要用复杂的方法处理大量数据。例如:
-数据库、数据挖掘
-石油勘探
-网络搜索引擎、基于网络的商务服务
-医学成像和诊断
-制药设计
-国有企业或跨国企业的管理
-金融经济建模
-高级制图和虚拟现实、特别实在娱乐事业上
-网络视频和多媒体技术
-协同工作环境
2.2 为什么使用并行计算
●主要的原因有:
节省时间和成本:理论上,使用更多的资源会使一个任务提前完成,而且会节约潜在的成本。况且可以使用便宜的、甚至市面将要淘汰的CPU来构建并行聚簇。
●解决更大规模的问题:很多问题是相当庞大而复杂的,尤其是当计算机的内存受到
限制的时候,用单个计算机来解决是不切实际或者根本不可能的。例如:-"Grand Challenge" (/wiki/Grand_Challenge) 问题需要Peta级浮点运算能力和存储空间的计算资源。
-网络搜索引擎和网络数据库每秒钟要执行上百万次的处理。
支持并行:单一的计算资源在同一时刻只能做一件事情。多个计算资源能够同时做很多事情。例如:Access Grid (/)提供一个全球的合作网络,在这里来自世界上不同国家的人们可以开会并―现场‖指导工作。
使用非本地资源:当缺少本地计算资源的时候可以使用广泛的网络或Internet计算资源。例如:
-SETI@home () 使用超过330000个计算机来执行每秒超过528T次浮点运算;(August 04, 2008)
-Folding@home ()使用超过340,000 计算机来执行每秒4.2P次浮点运算(November 4, 2008)
串行计算的限制:在理论上和实际上,想要轻易地制造更快的串行计算机存在着巨大的限制。
-传输速度——线性计算机的执行速度直接取决于数据在硬件中传输的速度。光速的绝对限制是每纳秒30cm,铜导线是每纳秒9cm。不断提升的执行速度更加靠近极
限。
-微型化的极限——处理器技术使芯片集成了更多的晶体管。但是,即使使用分子或者原子级别的组件也会很快达到芯片集成晶体管的极限。
-经济上的限制——让单个芯片变得更快需要增加昂贵的投入。用多个一般的芯片来取代单个高性能的芯片或许性能会更好而且更便宜。
现在的计算机体系结构越来越依赖于硬件层次的并行来提高性能:
-多个执行单元
-管道指令
-多核
谁?什么?
给出了并行计算用户的数据统计——下面的图标只是一个样例。下面几点需要注意:
-扇形可能重叠——例如,研究的部分可能在经典研究中。作者不得不二选一。