并行程序设计原理[试读]
目录1
出版者的话 推荐序 译者序 前言 第一部分 基 础 第1章 导论 2 1.1 并行的威力和潜能 2 1.1.1 并行,一个熟悉的概念 2 1.1.2 计算机程序中的并行 2 1.1.3 多核计算机,一个机遇 3 1.1.4 使用并行硬件的更多机遇 4 1.1.5 并行计算和分布式计算的比较 4 1.1.6 系统级并行 5 1.1.7 并行抽象的便利 5 1.2 考察顺序程序和并行程序 6 1.2.1 并行化编译器 6 1.2.2 范例求解的变化 7 1.2.3 并行前缀求和 8 1.3 使用多指令流实现并行 9 1.3.1 线程概念 9 1.3.2 统计3的个数的多线程求解方法 10 1.4... 查看全部[ 目录1 ]
目录2
第三部分 并行程序设计语言 第6章 线程程序设计 104 6.1 POSIX Threads 104 6.1.1 线程的创建和销毁 104 6.1.2 互斥 108 6.1.3 同步 110 6.1.4 安全性问题 117 6.1.5 性能问题 120 6.1.6 案例研究1:连续过度松弛 124 6.1.7 案例研究2:重叠同步与计算 129 6.1.8 案例研究3:多核芯片上的流计算 134 6.2 Java Threads 134 6.2.1 同步方法 135 6.2.2 同步语句 136 6.2.3 统计3的个数程序实例 136 6.2.4 易变存储器 138 6.2.5 原子对象 1... 查看全部[ 目录2 ]
推荐序
早在1842年,意大利数学家Luigi Menabrea 就在其《查尔斯·巴贝奇的分析引擎》(《Sketch of the Analytical Engine Invented by Charles Babbage》)一文中阐述了并行的理念。他的这篇文章涉及计算机系统结构和程序设计的诸多方面。到了1958年,S.Gill针对并行程序设计进行了探讨,而IBM的John Cocke和Daniel Slotnick则针对并行数值计算进行了探讨。然而直到1962年,第一台多处理计算机才藉由Burroughs公司的D825而面世。此后,为数众多的公司提出并推出了不同系统结构的多处理器系统。 曾几何时,工... 查看全部[ 推荐序 ]
译者序
随着多核体系结构的出现和快速发展,使得并行计算科学的硬件基础设施发生了很大变化,如果把并行硬件基础设施看成是“经济基础”,则其相应的上层并行软件就可以视为“上层建筑”。由于“经济基础”的变化,作为其中重要的“上层建筑”之一的并行程序设计技术,必须进行相应的变化以适应新的“经济基础”。因此如何在多核体系结构上进行高效的并行程序设计以充分利用多核所提供的硬件并行性,从而大幅度地提升并行计算性能指标就显得非常重要。本书的主要论题之一便是环绕这一问题展开的。 并行程序设计比顺序程序设计要困难得多,一是因为并行程序设计的平台不是唯一的,存在多种不同的并行体系结构,而顺序程序设计只有唯一的冯·诺依曼体系结... 查看全部[ 译者序 ]
1.1 并行的威力和潜能
并行在日常生活中时常碰到。更为重要的是,在过去的几十年中并行以各种方式为计算机性能的稳定提高做出了贡献。现在新的机遇正在出现。下面让我们来详细论述这一点。... 查看全部[ 1.1 并行的威力和潜能 ]
1.1.1 并行,一个熟悉的概念
并行是我们熟悉的一个概念。杂耍(juggling)是人类能完成的一个并行任务。房屋建造是一种并行活动,因为几个工人能同时完成不同的工作,如电线配线、水管安置、锅炉管道安装等等。大多数的工业产品如汽车、吹风器、速冻食品,都以流水线方式进行生产,在流水线上正在建造的许多单件产品是同时进行加工或装配的。呼叫中心则是另一种应用并行的结构,其中有许多雇员在同时为顾客服务。 虽然熟悉,但应注意这些并行形式是不同的。例如呼叫中心在本质上与房屋建造有所不同:呼叫通常是独立的,因此能以任意次序提供服务,而且工作人员之间几乎没有交互。而在建房时,某些任务能同时完成,如电线配线和水管安置,而另外一些任务则必须依次进... 查看全部[ 1.1.1 并行,一个熟悉的概念 ]
1.1.2 计算机程序中的并行
以并行方式执行程序指令的主要动机是为了加快计算。但是现今的大多数程序是无法通过并行来改进性能的,因为它们的编写是假设指令是按序执行的,每次执行一条指令,即是顺序执行的。大多数程序设计语言的语义体现为顺序执行,按这种语义编写的程序通常严重地依赖于这种特征来保证正确性,因而很难有机会实现并行执行。当然,还存在一些机会,例如在计算表达式(a+b)*(c+d)时,假定这些都是简单变量,由于子表达式(a+b)和(c+d)相互独立,因此它们能同时计算。这就是指令级并行(Insruction Level Parallelism,ILP)的例子。 的确,我们继续编写顺序程序的一个理由是因为计算机体系结构师们在... 查看全部[ 1.1.2 计算机程序中的并行 ]
1.1.3 多核计算机,一个机遇
虽然单处理器的性能改进可能已接近极限,但摩尔定律的预言使得晶体管密度仍在不断提高。芯片制造商利用这一机会,在单个芯片上放置多个指令执行引擎以及相应的高速缓存。这种结构很快得到新的名称“核”(core),因为它代表了一个典型顺序处理器的核心部分。早期的多核芯片有2个、4个或8个核,但是核的数目随着新一代处理器的出现在不断增长。 于2005/2006年问世的第一个多核芯片引起了全社会关于“免费午餐结束”的讨论。讨论的焦点如下: ?由于如前所述的硅工艺和体系结构设计(隐藏并行)的进步,软件开发者几十年来一直享受稳定的性能改进—“免费午餐”。 ?由于无须关心性能,多年来程序员对他们使用的技术和方法学几... 查看全部[ 1.1.3 多核计算机,一个机遇 ]
1.1.4 使用并行硬件的更多机遇
到目前为止所讨论的使用并行的机遇只涉及少量的处理器。但实际上还存在许多更具雄心的机遇。 超级计算机 国家研究实验室、军事部门以及大公司所感兴趣的求解问题通常需要使用超级计算机,所谓超级计算机是指当今世界上最快的计算机。20年前,超级计算机是用户定制的单处理器系统(一般具有向量处理能力),但是1996年11月在500强(Top 500)最快计算机名单中最后出现的单处理器系统共有3台,排名仅分别为第265位、第374位和第498位。现在的500强名单则为具有数以千计的处理器的并行计算机所占据。在许多方面,超级计算机程序员形成了最大和最富经验的并行程序员社区。 机群 常常可以观察到,不论单计算机有多... 查看全部[ 1.1.4 使用并行硬件的更多机遇 ]
1.1.5 并行计算和分布式计算的比较
如前所述,分布式计算和并行计算是不同的。 并行计算的传统目的是提供单处理器无法提供的性能(处理器能力或存储器);因此,它的目的是使用多处理器求解单个问题。而分布式计算的目的主要是提供方便,这种方便包括可用性、可靠性以及物理的分布(能从许多不同场所访问分布式系统)。 在并行计算中,处理器间的交互一般很频繁,往往具有细粒度和低开销的特征,并且被认为是可靠的。而在分布式计算中,处理器间的交互不频繁,交互特征是粗粒度,并且被认为是不可靠的。并行计算注重短的执行时间,分布式计算则注重长的正常运行时间。 当然,并行计算和分布式计算两者是密切相关的。某些特征与程度(处理器间交互频率)有关,而我们还未对这种交... 查看全部[ 1.1.5 并行计算和分布式计算的比较 ]