书籍详情
并行算法实践
作者:陈国良[等]编著
出版社:高等教育出版社
出版时间:2004-01-01
ISBN:9787040133066
定价:¥49.50
购买这本书可以去
内容简介
本书是并行计算系列丛书之四,旨在介绍并行程序设计的有关知识和并行算法的具体编程实现。.本书从内容安排上分为上篇和下篇。其中,上篇为并行程序设计导论,主要包括并行程序设计基础(并行计算机系统与结构模型、PC机群搭建和并行程序设计简介等)、并行程序编程指南(MPI、PVM、HPF和OpenMP等)和并行程序开发方法(可视化并行程序设计环境、并行程序调试和并行程序性能分析及优化等);下篇为并行算法编程实现,主要包括非数值并行算法(排序、串匹配、图论、组合优化和计算几何等)及其MPI编程实现和数值计算并行算法(矩阵运算、线性方程组求解、矩阵特征值计算和傅氏及小波变换等)及其MPI编程实现。书后所附的光盘中包含了第Ⅳ单元和第Ⅴ单元中所有并行算法的MPI源程序。..书中内容精炼、实用,体现了并行算法的设计与实现相结合,可作为高等学校计算机及相关专业的本科高年级学生和研究生的教材,其中上篇和下篇也可分别作为“并行程序设计导论”和“并行算法编程指南”单独使用。本书也可供从事并行程序设计及其实现的科技人员参考阅读。...
作者简介
陈国良,中国科学技术大学教授,1938年6月生,安徽颖上人。1961年毕业于西安交通大学无线电系计算机专业。现任国家高性能计算中心(合肥)主任,博士生导师,国家教育部高等学校计算机科学技术教学指导委员会副主任,全国高等教育电子、电工与信息类专业自考指导委员会副主任,中国计算机学会理事,中国计算机学会开放系统专业委员会副主任,中国数学会计算数学并行计算专业委员会委员,中国计算机学会数据通信与计算机网络专业委员会委员,全国自然科学名词审定委员会委员。曾任中国科学技术大学计算机系主任和安徽省计算机学会理事长。享受国家政府特殊津贴。陈国良教授长期从事计算机科学技术的教学与研究工作。主要研究领域为并行算法、计算机体系结构、计算机网络和神经计算等。先后主持完成了10多项国家863计划、国家攀登计划、国家973计划、国家自然基金、教育部博士基金等科研项目。取得了多项被国内外广泛引用的、达到国际先进水平的科研成果,发表论文100多篇,出版著作7部、译著5部,参与主编计算机类词典、词汇5部,主审、主编计算机类各种教材8部。曾获国家级二等奖以及部、省、院级一等、二等、三等奖共11项。十几年来,陈国良教授先后指导计算机专业硕士研究生40余名和博士研究生30余名,率先创建了我国第一个国家高性能计算中心,为我国培养了一批在国内外从事算法研究的高级人才。日前,水利部淮河水利委员会在致中国科学技术大学的感谢信中说:“特别感谢陈国良教授项目组,在淮河今夏防洪战斗中亲临防洪调度第一线以及提供高性能计算支持,使我们取得了战胜特大洪水的胜利。”感谢信中提到的陈国良,人称“神算子”,现为中国科学技术大学教授,博士生导师,国家高性能计算中心(合肥)主任,国际高性能计算(亚洲)常务理事。不计名利,振兴国货陈国良教授是安徽省颍上人,父母都是地地道道的庄稼人,大字不识一个。由于家里困难,陈教授靠国家的助学金读完了中学。1956年考入上海交通大学电力系,成为方圆几十里的第一个大学生。进入大学不久,随大学整体搬迁到西安,他又成了西安交通大学的学生。1961年毕业后,参军从事国防科研工作,1973年,陈教授调入科大,至今在科大从事教育科研事业整整30年。从大学时代起,陈教授就参加了电子管计算机和晶体管计算机等两代国产计算机的研制,对民族计算机事业深有感情。由于文革的影响,我国自行研制的计算机与世界水平的差距在不断加大,国内计算机市场几乎被国外垄断,硬软件几乎全部进口,对于搞硬件出身、亲自做了两代计算机的陈教授来说,感到很失落,只好“下岗”而“再就业”于并行算法的研究。“我们有能力在高性能计算技术上赶超世界先进水平,在世界高性能计算机领域占有一席之地”。近些年,经过几代科学家和研制者的不懈努力和刻苦攻关,我国已研制出不少高性能计算机。然而研制出来后面临推广应用的困难,有人甚至对国产并行机表示怀疑。但陈教授认为国家研制出了先进的计算机不应用,那用来干嘛呢!他坚持不怕国产机不好用,就怕你不用,通过用可以发现不好用的地方,有毛病可以找专家来帮助解决。陈教授平时不爱与人争执,但在推行“曙光1000”受到阻力时却极力抗争,并在自己的实验室购置了“曙光1000”。他提出的“扶君上马,送君一程”的服务口号,得到了许多人支持,同时也为推动国产计算机的应用起到了样板作用。研制并行计算机最终是为了应用,但在安徽,什么地方才能用到这么大的一个机器呢?陈教授是在淮河边上长大的,深知淮河的厉害。江淮之间气候复杂,灾害性天气时常发生,那么能不能用这台大型计算机来做安徽省的数值气象预报、淮河水情预测和水库调度服务于江淮百姓呢?于是陈教授凭借自己多年从事并行算法研究的技术和人才优势,自愿请缨,组织第一批“敢死队”,先后五次到蚌埠与淮委联系,不厌其烦地教用户怎样使用并行机,义务帮助用户并行化串行程序等,直到用户能够自行独立使用为止,最后以三顾茅庐的诚意和愚公移山的毅力感动了用户。淮委领导说,象中国科大这位白发苍苍的教授,屡屡登门,不计报酬,还赔上学生和设备,到哪里去找?我们有什么理由不与他们合作而将其拒之门外?就这样,陈老师打开了曙光并行机在安徽省防灾减灾中的应用。“精诚所至,金石为开”,如今国产并行机在我国计算机产业中占有了一席之地。1995年陈国良创建了我国第一个国家高性能计算中心,先后承担了国家863重大项目“安徽省防灾减灾智能信息与决策支持系统”和“淮河流域防洪防污智能调度系统”。他还与淮委成立了水科学与工程联合实验室,并在宁波成立了国家高性能计算中心分中心,努力将并行机用于杭州湾数字化大桥建设管理中,拓展国产机的应用领域。学以致用,情系淮河淮河,本是一条尾闾通畅的河流。“走千走万,不如淮河两岸”,这曾是千百年来淮河儿女美好生活的生动写照,但是黄河多次溃决夺淮,使淮河丧失了入海口,淮河也就经常桀骜不驯,泛滥成灾。仅新中国成立以来,淮河流域平均10年左右就发生一次大洪水。早在新中国成立不久,毛泽东主席就含泪写下“一定要把淮河修好”的题词,后来几代水利专家都倾注心血治理淮河,但是淮河水系复杂,水库繁多,如何对这些大型水库进行全局优化调度,利用“蓄泄兼施”,达到“上控、中畅、下泄”,这就需要精密计算,科学调度。这位喝着淮河水长大的淮河之子,对母亲河有着与生俱来的情感。他的母校凤台中学就挨着淮河大堤,陈教授从小就对淮河水患感同身受。每逢暴风骤雨,一夜醒来,学校周围一片汪洋。在汛期如注暴雨的肆虐之下,万顷良田顿时变成茫茫泽国,父老乡亲无奈举家逃荒,这在陈国良心头留下难以抹去的阴影。多年来,陈教授与淮委紧密合作,成功研制了“安徽省防灾减灾智能信息与决策支持系统”。该系统使用曙光1000作为服务器,将中尺度数值气象预报模式MM4的计算结果作为水情预测和群库优化调度的决策参考依据,在汛期对淮河中上游九大水库进行防洪调度,取得了显著的社会和经济效益,获得2001年度国家科技进步二等奖。今年夏天,淮河流域遭受了50年一遇的特大洪涝灾害,水情、灾情时刻牵动着陈教授的心。6月28日至7月15日是淮河抗洪工作最紧张的时刻,陈教授带领中国科大师生一行10人亲临防洪现场,为防洪调度决策提供高性能计算支持。同时,为了确保计算参数的准确性,他还与淮委相关技术人员一同对“方邱湖”、“西大坝”等防洪重点区域进行了实地考察,提出了洪水演进计算方案,为该区域的防洪调度工作提供了科学依据。
目录
上篇并行程序设计导论
单元I并行程序设计基础.
第一章并行计算机系统与结构模型(5)
1.1典型并行计算机系统简介(5)
1.1.1阵列处理机(5)
1.1.2向量处理机(7)
1.1.3共享存储多处理机(9)
1.1.4分布存储多计算机(10)
1.1.5分布共享存储多处理机(12)
1.2当代并行计算机体系结构(14)
1.2.1并行计算机体系结构模型(14)
1.2.2并行计算机存储结构模型(17)
1.2.3分布式高速缓存与主存体系结构(19)
1.3小结(22)
参考文献(23)
第二章PC机群的搭建(24)
2.1机群系统概述(24)
2.1.1机群系统原理与技术(24)
2.1.2典型机群系统简介(26)
2.2硬件的选择与安装(27)
2.2.1节点构建(28)
2.2.2系统构建(31)
2.2.3机群系统示例(33)
2.3软件的选择与安装(33)
2.3.1OS的选择(33)
2.3.2SSI的构建(35)
2.3.3编程环境的选择(38)
2.3.4作业管理系统的选择(42)
2.4机群系统性能评测(49)
2.4.1基准测试程序(49)
2.4.2性能分析工具(53)
2.5小结(56)
参考文献(56)
第三章并行程序设计简介(58)
3.1并行程序开发方法(58)
3.1.1并行层次与代码粒度(58)
3.1.2并行程序开发策略(59)
3.1.3并行编程模式(61)
3.1.4并行应用编程过程(63)
3.2并行程序设计模型(68)
3.2.1计算π样本程序(68)
3.2.2数据并行模型(69)
3.2.3消息传递模型(71)
3.2.4共享变量模型(72)
3.3并行编程语言和环境概述(73)
3.3.1早期并行编程语言(74)
3.3.2近代并行编程语言与环境(75)
3.3.3并行说明性语言环境(78)
3.4循环程序并行化的一般方法(78)
3.4.1数据相关分析(78)
3.4.2数据划分与处理器指派(80)
3.4.3循环重构(87)
3.5小结(96)
参考文献(96)
单元I习题(98)
单元II并行程序编程指南
第四章MPI编程指南(105)
4.1引言(105)
4.1.1MPI的产生(105)
4.1.2MPI的语言绑定(106)
4.1.3MPI的实现(107)
4.26个基本函数组成的MPI子集(107)
4.3MPI消息(109)
4.3.1消息数据类型(110)
4.3.2消息标签(113)
4.3.3通信域(115)
4.3.4消息状态(117)
4.4点对点通信(117)
4.4.1MPI通信模式(118)
4.4.2阻塞和非阻塞通信(119)
4.4.3通信和计算的重叠(119)
4.5群集通信(121)
4.5.1群集通信的通信功能(122)
4.5.2群集通信的同步功能(125)
4.5.3群集通信的聚合功能(125)
4.5.4群集通信例程的共同特点(126)
4.5.5计算π的MPI程序(127)
4.6MPI扩展(127)
4.6.1动态进程(128)
4.6.2远程存储访问(129)
4.6.3并行I/O(131)
4.7小结(132)
参考文献(132)
第五章PVM编程指南(133)
5.1引言(133)
5.1.1开发历史(133)
5.1.2PVM的特点(134)
5.1.3与MPI的比较(134)
5.2PVM的启动和命令(135)
5.3一个简单的PVM程序(136)
5.3.1程序介绍(136)
5.3.2编译和运行(138)
5.4PVM任务(139)
5.4.1任务派生(139)
5.4.2任务组(140)
5.4.3任务标识符(141)
5.4.4任务管理(141)
5.5PVM通信(142)
5.5.1点对点通信(142)
5.5.2群集通信(142)
5.5.3消息的打包/解包(143)
5.5.4通信函数(144)
5.5.5计算π的PVM程序(145)
5.6PVM虚拟机结构(146)
5.6.1结构分析(147)
5.6.2动态配置(147)
5.6.3PVM虚拟机的构建过程(148)
5.7小结(149)
参考文献(149)
第六章HPF编程指南(150)
6.1HPF概述(151)
6.1.1引言(151)
6.1.2HPF的语言特点(152)
6.1.3HPF的语言模型(153)
6.2HPF编程简介(154)
6.2.1一个简单的HPF程序实例(154)
6.2.2HPF的基本特性(155)
6.3数据映射(159)
6.3.1数据映射说明语句(159)
6.3.2一个数据映射的HPF程序段分析(164)
6.4数据并行结构(165)
6.4.1数组运算(165)
6.4.2FORALL语句和FORALL结构(167)
6.4.3INDEPENDENT指示(169)
6.5HPF语言的过程(171)
6.5.1HPF语言的一般函数和子程序(171)
6.5.2HPF语言内部函数(172)
6.5.3HPF语言的库函数(174)
6.6HPF实例分析:2DFFT(176)
6.7HPF语言其他特性(178)
6.7.1HPF对FORTRAN90语言的限制(178)
6.7.2HPF1.1子集(179)
6.7.3HPF2.0与HPF1.1的不同点(180)
6.8小结(180)
参考文献(181)
附录一HPF指令语法(182)
附录二一般的内部函数及库函数(184)
附录三HPF网络资源(187)
第七章OpenMP编程指南(189)
7.1OpenMP概述(189)
7.1.1什么是OpenMP(190)
7.1.2OpenMP的历史(191)
7.1.3OpenMP的目标(191)
7.2OpenMP编程风格(191)
7.2.1OpenMP并行编程模型(191)
7.2.2OpenMP程序结构(192)
7.3OpenMP编程简介(193)
7.3.1一个简单的OpenMP程序实例(194)
7.3.2编译制导(195)
7.3.3并行域结构(196)
7.3.4共享任务结构(197)
7.3.5组合的并行共享任务结构(201)
7.3.6同步结构(202)
7.3.7threadprIvate编译制导语句(205)
7.3.8数据域属性子句(206)
7.3.9子句/编译制导语句总结(208)
7.3.10语句的绑定和嵌套规则(209)
7.4运行库例程与环境变量(210)
7.5OpenMP计算实例(210)
7.6小结(213)
参考文献(214)
附录运行库例程(215)
单元II习题(217)
单元III并行程序开发方法
第八章可视化并行程序设计环境(223)
8.1引言(223)
8.1.1并行软件工程(223)
8.1.2并行程序开发环境的要求(224)
8.1.3工具集成(225)
8.2SEPP/HPCTI简介(225)
8.2.1SEPP/HPCTI方法(225)
8.2.2SEPP/HPCTI组成(226)
8.3可视化并行语言的分类(228)
8.3.1通用编程模型(229)
8.3.2进程模型(232)
8.3.3进程交互(233)
8.3.4正则并行结构(234)
8.3.5分层设计和代码复用(235)
8.4可视化环境实例(236)
8.4.1FrameWorks系统(236)
8.4.2EnterprIse并行编程系统(237)
8.4.3CODE2.0语言(238)
8.4.4HeNCE编程环境(239)
8.4.5TRAPPER编程环境(240)
8.4.6Meander环境(241)
8.5小结(243)
参考文献(244)
第九章并行程序的调试(245)
9.1并行调试的方法与步骤(245)
9.1.1并行调试的困难(245)
9.1.2并行调试的方法(246)
9.1.3并行调试的步骤(247)
9.2并行调试器的设计与实现(254)
9.2.1前期设计(254)
9.2.2初步实现(256)
9.2.3功能开发(258)
9.2.4维护(260)
9.3高级并行调试技术简介(260)
9.3.1全局断点(261)
9.3.2渐增检查点(261)
9.3.3事件分析(261)
9.3.4静态分析(262)
9.4并行程序的性能调试(262)
9.4.1性能调试的一般步骤(262)
9.4.2性能分析工具举例:VAMPIR和GuIdeVIew(263)
9.5小结(267)
参考文献(267)
第十章并行程序的性能分析(269)
10.1并行程序性能监控(269)
10.1.1监控的应用和分类(269)
10.1.2并行跟踪的实现(271)
10.1.3侵扰的模型和补偿处理(273)
10.1.4并行监控和操作系统的结合与交互(275)
10.2并行程序性能预测(275)
10.2.1并行系统中的性能预测(275)
10.2.2并行系统建模(278)
10.2.3并行系统模拟仿真(281)
10.3性能可视化..(282)
10.3.1可视化的概念(283)
10.3.2数据生成(284)
10.3.3数据显示(285)
10.3.4数据分析和用户交互(289)
10.3.5用户界面(291)
10.4小结(291)
参考文献(292)
第十一章并行程序的性能优化(294)
11.1引言(294)
11.1.1调度问题的一般模型(294)
11.1.2并行计算中的任务调度(295)
11.1.3并行计算中任务调度的分类(297)
11.1.4并行计算中任务调度的模型(299)
11.2静态任务调度的NP完全性及其最优算法(302)
11.2.1静态任务调度的NP完全性(302)
11.2.2静态任务调度的最优算法(304)
11.3静态任务调度的启发式算法(305)
11.3.1贪心算法(305)
11.3.2随机算法(306)
11.3.3聚簇策略(307)
11.4动态负载平衡(308)
11.4.1基本概念(308)
11.4.2负载信息收集(309)
11.4.3负载迁移决策(310)
11.4.4负载迁移执行(315)
11.5小结(317)
参考文献(318)
第十二章图形化并行程序集成开发环境GRADE简介(320)
12.1GRADE并行程序集成开发环境(320)
12.1.1GRADE的组成(321)
12.1.2在GRADE环境中开发并行程序的步骤(321)
12.2可视化并行程序设计(323)
12.2.1可视化并行程序设计语言GRAPNEL(323)
12.2.2图形编辑器GRED(328)
12.3映射和调度以及负载平衡工具(330)
12.3.1DSM&S和DLB与GRADE环境的集成(330)
12.3.2调度和映射工具(331)
12.3.3动态负载平衡系统(332)
12.4并行分布式程序调试器(333)
12.4.1DDBG与GRADE的集成(334)
12.4.2DDBG的体系结构与接口库(334)
12.4.3GRED与DDBG的集成(336)
12.5Tape/PVM监控器和PROVE可视化工具(337)
12.5.1源代码插桩(337)
12.5.2数据获取和跟踪分析(339)
12.5.3可视化(340)
12.6小结(341)
参考文献(341)
单元III习题(343)
下篇并行算法编程实现
单元IV非数值并行算法MPI编程实现
第十三章排序(351)
13.1枚举排序(351)
13.1.1枚举排序及其串行算法(351)
13.1.2枚举排序的并行算法(352)
13.2快速排序(353)
13.2.1快速排序及其串行算法(353)
13.2.2快速排序的并行算法(354)
13.3并行正则采样排序PSRS(356)
13.3.1PSRS算法原理(356)
13.3.2PSRS算法形式化描述(356)
13.4小结(357)
参考文献(357)
附录PSRS算法MPI源程序(358)
第十四章串匹配(364)
14.1KMP串匹配算法(364)
14.1.1KMP串匹配及其串行算法(364)
14.1.2KMP串匹配的并行算法(368)
14.2随机串匹配算法(372)
14.2.1随机串匹配及其串行算法(372)
14.2.2随机串匹配的并行算法(374)
14.3近似串匹配算法(375)
14.3.1近似串匹配及其串行算法(375)
14.3.2近似串匹配的并行算法(381)
14.4小结(383)
参考文献(383)
附录KMP串匹配并行算法的MPI源程序(385)
第十五章图论(392)
15.1传递闭包(392)
15.1.1传递闭包串行算法(392)
15.1.2传递闭包并行算法(394)
15.2连通分量(396)
15.2.1顶点倒塌法算法原理描述(396)
15.2.2连通分量并行算法(396)
15.3单源最短路径(398)
15.3.1最短路径串行算法(398)
15.3.2最短路径并行算法(399)
15.4最小生成树(402)
15.4.1最小生成树串行算法(402)
15.4.2最小生成树并行算法(403)
15.5小结(406)
参考文献(406)
附录连通分量并行算法的MPI源程序(407)
第十六章组合优化(411)
16.1八皇后问题(411)
16.1.1八皇后问题及其串行算法(411)
16.1.2八皇后问题的并行算法(412)
16.2SAT问题(414)
16.2.1SAT问题及其串行算法(414)
16.2.2SAT问题的并行算法(415)
16.3装箱问题(418)
16.3.1装箱问题及其串行算法(418)
16.3.2装箱问题的并行算法(419)
16.4背包问题(420)
16.4.1背包问题及其串行算法(420)
16.4.2背包问题的并行算法(422)
16.5TSP问题(423)
16.5.1TSP问题及其串行算法(423)
16.5.2TSP问题的并行算法(423)
16.6小结(425)
参考文献(426)
附录八皇后问题并行算法的MPI源程序(427)
第十七章计算几何(432)
17.1包含问题(432)
17.1.1包含问题及其串行算法(432)
17.1.2包含问题并行算法(433)
17.2相交问题(435)
17.2.1两多边形相交问题及其串行算法(435)
17.2.2相交问题的并行算法(436)
17.3凸壳问题(437)
17.3.1凸壳问题及其串行算法(438)
17.3.2凸壳问题并行算法(439)
17.4小结(440)
参考文献(440)
附录包含问题并行算法的MPI源程序(441)
单元IV习题(444)
单元V数值并行算法MPI编程实现
第十八章矩阵运算(455)
18.1矩阵转置(455)
18.1.1矩阵转置及其串行算法(455)
18.1.2矩阵转置并行算法(456)
18.2矩阵-向量乘法(458)
18.2.1矩阵-向量乘法及其串行算法(458)
18.2.2矩阵-向量乘法的并行算法(458)
18.3行列划分矩阵乘法(459)
18.3.1矩阵相乘及其串行算法(459)
18.3.2简单的矩阵并行分块乘法算法(460)
18.4Cannon乘法(462)
18.4.1Cannon乘法的原理(462)
18.4.2Cannon乘法的并行算法(462)
18.5LU分解(466)
18.5.1矩阵的LU分解及其串行算法(466)
18.5.2矩阵LU分解的并行算法(467)
18.6QR分解(469)
18.6.1矩阵QR分解的串行算法(469)
18.6.2矩阵QR分解的并行算法(471)
18.7奇异值分解(474)
18.7.1矩阵奇异值分解的串行算法(474)
18.7.2矩阵奇异值分解的并行算法(477)
18.8Cholesky分解(480)
18.8.1矩阵Cholesky分解的串行算法(480)
18.8.2矩阵Cholesky分解的并行算法(481)
18.9矩阵求逆(483)
18.9.1求矩阵的逆的串行算法(483)
18.9.2矩阵求逆的并行算法(484)
18.10小结(486)
参考文献(486)
附录一Cannon乘法并行算法的MPI源程序(488)
附录二矩阵LU分解并行算法的MPI源程序(494)
附录三矩阵求逆并行算法的MPI源程序(498)
第十九章线性方程组的直接解法(504)
19.1高斯消去法解线性方程组(504)
19.1.1高斯消去及其串行算法(504)
19.1.2并行高斯消去算法(507)
19.2约当消去法解线性方程组(512)
19.2.1约当消去及其串行算法(512)
19.2.2约当消去法的并行算法(514)
19.3小结(517)参考文献(518)
附录全主元高斯消去法并行算法的MPI源程序(519)
第二十章线性方程组的迭代解法(524)
20.1雅可比迭代(524)
20.1.1雅可比迭代及其串行算法(524)
20.1.2雅可比迭代并行算法(526)
20.2高斯-塞德尔迭代(527)
20.2.1高斯-塞德尔迭代及其串行算法(527)
20.2.2高斯-塞德尔迭代并行算法(528)
20.3松弛法(531)
20.3.1松弛法及其串行算法(531)
20.3.2松弛法并行算法(532)
20.4小结(534)
参考文献(534)
附录高斯-塞德尔迭代并行算法的MPI源程序(535)
第二十一章矩阵特征值计算(540)
21.1求解矩阵最大特征值的乘幂法(540)
21.1.1乘幂法及其串行算法(540)
21.1.2乘幂法并行算法(541)
21.2求对称矩阵特征值的雅可比法(543)
21.2.1雅可比法求对称矩阵特征值的串行算法(543)
21.2.2雅可比法求对称矩阵特征值的并行算法(546)
21.3求对称矩阵特征值的单侧旋转法(556)
21.3.1单侧旋转法的算法描述(556)
21.3.2求对称矩阵特征值的单侧旋转法的并行计算(559)
21.4求一般矩阵全部特征值的QR方法(562)
21.4.1QR方法求一般矩阵全部特征值的串行算法(562)
21.4.2QR方法求一般矩阵全部特征值的并行算法(563)
21.5小结(565)
参考文献(566)
附录求对称矩阵特征值的雅可比并行算法MPI源程序(567)
第二十二章快速傅氏变换和离散小波变换(581)
22.1快速傅里叶变换FFT(581)
22.1.1串行FFT迭代算法(581)
22.1.2并行FFT算法(583)
22.2离散小波变换DWT(585)
22.2.1离散小波变换DWT及其串行算法(585)
22.2.2离散小波变换并行算法(588)
22.3小结(590)
参考文献(590)
附录FFT并行算法的MPI源程序(591)
单元V习题(598)
算法索引(607)
MPI源程序清单...(609)
专业术语中英文对照及索引(611)
单元I并行程序设计基础.
第一章并行计算机系统与结构模型(5)
1.1典型并行计算机系统简介(5)
1.1.1阵列处理机(5)
1.1.2向量处理机(7)
1.1.3共享存储多处理机(9)
1.1.4分布存储多计算机(10)
1.1.5分布共享存储多处理机(12)
1.2当代并行计算机体系结构(14)
1.2.1并行计算机体系结构模型(14)
1.2.2并行计算机存储结构模型(17)
1.2.3分布式高速缓存与主存体系结构(19)
1.3小结(22)
参考文献(23)
第二章PC机群的搭建(24)
2.1机群系统概述(24)
2.1.1机群系统原理与技术(24)
2.1.2典型机群系统简介(26)
2.2硬件的选择与安装(27)
2.2.1节点构建(28)
2.2.2系统构建(31)
2.2.3机群系统示例(33)
2.3软件的选择与安装(33)
2.3.1OS的选择(33)
2.3.2SSI的构建(35)
2.3.3编程环境的选择(38)
2.3.4作业管理系统的选择(42)
2.4机群系统性能评测(49)
2.4.1基准测试程序(49)
2.4.2性能分析工具(53)
2.5小结(56)
参考文献(56)
第三章并行程序设计简介(58)
3.1并行程序开发方法(58)
3.1.1并行层次与代码粒度(58)
3.1.2并行程序开发策略(59)
3.1.3并行编程模式(61)
3.1.4并行应用编程过程(63)
3.2并行程序设计模型(68)
3.2.1计算π样本程序(68)
3.2.2数据并行模型(69)
3.2.3消息传递模型(71)
3.2.4共享变量模型(72)
3.3并行编程语言和环境概述(73)
3.3.1早期并行编程语言(74)
3.3.2近代并行编程语言与环境(75)
3.3.3并行说明性语言环境(78)
3.4循环程序并行化的一般方法(78)
3.4.1数据相关分析(78)
3.4.2数据划分与处理器指派(80)
3.4.3循环重构(87)
3.5小结(96)
参考文献(96)
单元I习题(98)
单元II并行程序编程指南
第四章MPI编程指南(105)
4.1引言(105)
4.1.1MPI的产生(105)
4.1.2MPI的语言绑定(106)
4.1.3MPI的实现(107)
4.26个基本函数组成的MPI子集(107)
4.3MPI消息(109)
4.3.1消息数据类型(110)
4.3.2消息标签(113)
4.3.3通信域(115)
4.3.4消息状态(117)
4.4点对点通信(117)
4.4.1MPI通信模式(118)
4.4.2阻塞和非阻塞通信(119)
4.4.3通信和计算的重叠(119)
4.5群集通信(121)
4.5.1群集通信的通信功能(122)
4.5.2群集通信的同步功能(125)
4.5.3群集通信的聚合功能(125)
4.5.4群集通信例程的共同特点(126)
4.5.5计算π的MPI程序(127)
4.6MPI扩展(127)
4.6.1动态进程(128)
4.6.2远程存储访问(129)
4.6.3并行I/O(131)
4.7小结(132)
参考文献(132)
第五章PVM编程指南(133)
5.1引言(133)
5.1.1开发历史(133)
5.1.2PVM的特点(134)
5.1.3与MPI的比较(134)
5.2PVM的启动和命令(135)
5.3一个简单的PVM程序(136)
5.3.1程序介绍(136)
5.3.2编译和运行(138)
5.4PVM任务(139)
5.4.1任务派生(139)
5.4.2任务组(140)
5.4.3任务标识符(141)
5.4.4任务管理(141)
5.5PVM通信(142)
5.5.1点对点通信(142)
5.5.2群集通信(142)
5.5.3消息的打包/解包(143)
5.5.4通信函数(144)
5.5.5计算π的PVM程序(145)
5.6PVM虚拟机结构(146)
5.6.1结构分析(147)
5.6.2动态配置(147)
5.6.3PVM虚拟机的构建过程(148)
5.7小结(149)
参考文献(149)
第六章HPF编程指南(150)
6.1HPF概述(151)
6.1.1引言(151)
6.1.2HPF的语言特点(152)
6.1.3HPF的语言模型(153)
6.2HPF编程简介(154)
6.2.1一个简单的HPF程序实例(154)
6.2.2HPF的基本特性(155)
6.3数据映射(159)
6.3.1数据映射说明语句(159)
6.3.2一个数据映射的HPF程序段分析(164)
6.4数据并行结构(165)
6.4.1数组运算(165)
6.4.2FORALL语句和FORALL结构(167)
6.4.3INDEPENDENT指示(169)
6.5HPF语言的过程(171)
6.5.1HPF语言的一般函数和子程序(171)
6.5.2HPF语言内部函数(172)
6.5.3HPF语言的库函数(174)
6.6HPF实例分析:2DFFT(176)
6.7HPF语言其他特性(178)
6.7.1HPF对FORTRAN90语言的限制(178)
6.7.2HPF1.1子集(179)
6.7.3HPF2.0与HPF1.1的不同点(180)
6.8小结(180)
参考文献(181)
附录一HPF指令语法(182)
附录二一般的内部函数及库函数(184)
附录三HPF网络资源(187)
第七章OpenMP编程指南(189)
7.1OpenMP概述(189)
7.1.1什么是OpenMP(190)
7.1.2OpenMP的历史(191)
7.1.3OpenMP的目标(191)
7.2OpenMP编程风格(191)
7.2.1OpenMP并行编程模型(191)
7.2.2OpenMP程序结构(192)
7.3OpenMP编程简介(193)
7.3.1一个简单的OpenMP程序实例(194)
7.3.2编译制导(195)
7.3.3并行域结构(196)
7.3.4共享任务结构(197)
7.3.5组合的并行共享任务结构(201)
7.3.6同步结构(202)
7.3.7threadprIvate编译制导语句(205)
7.3.8数据域属性子句(206)
7.3.9子句/编译制导语句总结(208)
7.3.10语句的绑定和嵌套规则(209)
7.4运行库例程与环境变量(210)
7.5OpenMP计算实例(210)
7.6小结(213)
参考文献(214)
附录运行库例程(215)
单元II习题(217)
单元III并行程序开发方法
第八章可视化并行程序设计环境(223)
8.1引言(223)
8.1.1并行软件工程(223)
8.1.2并行程序开发环境的要求(224)
8.1.3工具集成(225)
8.2SEPP/HPCTI简介(225)
8.2.1SEPP/HPCTI方法(225)
8.2.2SEPP/HPCTI组成(226)
8.3可视化并行语言的分类(228)
8.3.1通用编程模型(229)
8.3.2进程模型(232)
8.3.3进程交互(233)
8.3.4正则并行结构(234)
8.3.5分层设计和代码复用(235)
8.4可视化环境实例(236)
8.4.1FrameWorks系统(236)
8.4.2EnterprIse并行编程系统(237)
8.4.3CODE2.0语言(238)
8.4.4HeNCE编程环境(239)
8.4.5TRAPPER编程环境(240)
8.4.6Meander环境(241)
8.5小结(243)
参考文献(244)
第九章并行程序的调试(245)
9.1并行调试的方法与步骤(245)
9.1.1并行调试的困难(245)
9.1.2并行调试的方法(246)
9.1.3并行调试的步骤(247)
9.2并行调试器的设计与实现(254)
9.2.1前期设计(254)
9.2.2初步实现(256)
9.2.3功能开发(258)
9.2.4维护(260)
9.3高级并行调试技术简介(260)
9.3.1全局断点(261)
9.3.2渐增检查点(261)
9.3.3事件分析(261)
9.3.4静态分析(262)
9.4并行程序的性能调试(262)
9.4.1性能调试的一般步骤(262)
9.4.2性能分析工具举例:VAMPIR和GuIdeVIew(263)
9.5小结(267)
参考文献(267)
第十章并行程序的性能分析(269)
10.1并行程序性能监控(269)
10.1.1监控的应用和分类(269)
10.1.2并行跟踪的实现(271)
10.1.3侵扰的模型和补偿处理(273)
10.1.4并行监控和操作系统的结合与交互(275)
10.2并行程序性能预测(275)
10.2.1并行系统中的性能预测(275)
10.2.2并行系统建模(278)
10.2.3并行系统模拟仿真(281)
10.3性能可视化..(282)
10.3.1可视化的概念(283)
10.3.2数据生成(284)
10.3.3数据显示(285)
10.3.4数据分析和用户交互(289)
10.3.5用户界面(291)
10.4小结(291)
参考文献(292)
第十一章并行程序的性能优化(294)
11.1引言(294)
11.1.1调度问题的一般模型(294)
11.1.2并行计算中的任务调度(295)
11.1.3并行计算中任务调度的分类(297)
11.1.4并行计算中任务调度的模型(299)
11.2静态任务调度的NP完全性及其最优算法(302)
11.2.1静态任务调度的NP完全性(302)
11.2.2静态任务调度的最优算法(304)
11.3静态任务调度的启发式算法(305)
11.3.1贪心算法(305)
11.3.2随机算法(306)
11.3.3聚簇策略(307)
11.4动态负载平衡(308)
11.4.1基本概念(308)
11.4.2负载信息收集(309)
11.4.3负载迁移决策(310)
11.4.4负载迁移执行(315)
11.5小结(317)
参考文献(318)
第十二章图形化并行程序集成开发环境GRADE简介(320)
12.1GRADE并行程序集成开发环境(320)
12.1.1GRADE的组成(321)
12.1.2在GRADE环境中开发并行程序的步骤(321)
12.2可视化并行程序设计(323)
12.2.1可视化并行程序设计语言GRAPNEL(323)
12.2.2图形编辑器GRED(328)
12.3映射和调度以及负载平衡工具(330)
12.3.1DSM&S和DLB与GRADE环境的集成(330)
12.3.2调度和映射工具(331)
12.3.3动态负载平衡系统(332)
12.4并行分布式程序调试器(333)
12.4.1DDBG与GRADE的集成(334)
12.4.2DDBG的体系结构与接口库(334)
12.4.3GRED与DDBG的集成(336)
12.5Tape/PVM监控器和PROVE可视化工具(337)
12.5.1源代码插桩(337)
12.5.2数据获取和跟踪分析(339)
12.5.3可视化(340)
12.6小结(341)
参考文献(341)
单元III习题(343)
下篇并行算法编程实现
单元IV非数值并行算法MPI编程实现
第十三章排序(351)
13.1枚举排序(351)
13.1.1枚举排序及其串行算法(351)
13.1.2枚举排序的并行算法(352)
13.2快速排序(353)
13.2.1快速排序及其串行算法(353)
13.2.2快速排序的并行算法(354)
13.3并行正则采样排序PSRS(356)
13.3.1PSRS算法原理(356)
13.3.2PSRS算法形式化描述(356)
13.4小结(357)
参考文献(357)
附录PSRS算法MPI源程序(358)
第十四章串匹配(364)
14.1KMP串匹配算法(364)
14.1.1KMP串匹配及其串行算法(364)
14.1.2KMP串匹配的并行算法(368)
14.2随机串匹配算法(372)
14.2.1随机串匹配及其串行算法(372)
14.2.2随机串匹配的并行算法(374)
14.3近似串匹配算法(375)
14.3.1近似串匹配及其串行算法(375)
14.3.2近似串匹配的并行算法(381)
14.4小结(383)
参考文献(383)
附录KMP串匹配并行算法的MPI源程序(385)
第十五章图论(392)
15.1传递闭包(392)
15.1.1传递闭包串行算法(392)
15.1.2传递闭包并行算法(394)
15.2连通分量(396)
15.2.1顶点倒塌法算法原理描述(396)
15.2.2连通分量并行算法(396)
15.3单源最短路径(398)
15.3.1最短路径串行算法(398)
15.3.2最短路径并行算法(399)
15.4最小生成树(402)
15.4.1最小生成树串行算法(402)
15.4.2最小生成树并行算法(403)
15.5小结(406)
参考文献(406)
附录连通分量并行算法的MPI源程序(407)
第十六章组合优化(411)
16.1八皇后问题(411)
16.1.1八皇后问题及其串行算法(411)
16.1.2八皇后问题的并行算法(412)
16.2SAT问题(414)
16.2.1SAT问题及其串行算法(414)
16.2.2SAT问题的并行算法(415)
16.3装箱问题(418)
16.3.1装箱问题及其串行算法(418)
16.3.2装箱问题的并行算法(419)
16.4背包问题(420)
16.4.1背包问题及其串行算法(420)
16.4.2背包问题的并行算法(422)
16.5TSP问题(423)
16.5.1TSP问题及其串行算法(423)
16.5.2TSP问题的并行算法(423)
16.6小结(425)
参考文献(426)
附录八皇后问题并行算法的MPI源程序(427)
第十七章计算几何(432)
17.1包含问题(432)
17.1.1包含问题及其串行算法(432)
17.1.2包含问题并行算法(433)
17.2相交问题(435)
17.2.1两多边形相交问题及其串行算法(435)
17.2.2相交问题的并行算法(436)
17.3凸壳问题(437)
17.3.1凸壳问题及其串行算法(438)
17.3.2凸壳问题并行算法(439)
17.4小结(440)
参考文献(440)
附录包含问题并行算法的MPI源程序(441)
单元IV习题(444)
单元V数值并行算法MPI编程实现
第十八章矩阵运算(455)
18.1矩阵转置(455)
18.1.1矩阵转置及其串行算法(455)
18.1.2矩阵转置并行算法(456)
18.2矩阵-向量乘法(458)
18.2.1矩阵-向量乘法及其串行算法(458)
18.2.2矩阵-向量乘法的并行算法(458)
18.3行列划分矩阵乘法(459)
18.3.1矩阵相乘及其串行算法(459)
18.3.2简单的矩阵并行分块乘法算法(460)
18.4Cannon乘法(462)
18.4.1Cannon乘法的原理(462)
18.4.2Cannon乘法的并行算法(462)
18.5LU分解(466)
18.5.1矩阵的LU分解及其串行算法(466)
18.5.2矩阵LU分解的并行算法(467)
18.6QR分解(469)
18.6.1矩阵QR分解的串行算法(469)
18.6.2矩阵QR分解的并行算法(471)
18.7奇异值分解(474)
18.7.1矩阵奇异值分解的串行算法(474)
18.7.2矩阵奇异值分解的并行算法(477)
18.8Cholesky分解(480)
18.8.1矩阵Cholesky分解的串行算法(480)
18.8.2矩阵Cholesky分解的并行算法(481)
18.9矩阵求逆(483)
18.9.1求矩阵的逆的串行算法(483)
18.9.2矩阵求逆的并行算法(484)
18.10小结(486)
参考文献(486)
附录一Cannon乘法并行算法的MPI源程序(488)
附录二矩阵LU分解并行算法的MPI源程序(494)
附录三矩阵求逆并行算法的MPI源程序(498)
第十九章线性方程组的直接解法(504)
19.1高斯消去法解线性方程组(504)
19.1.1高斯消去及其串行算法(504)
19.1.2并行高斯消去算法(507)
19.2约当消去法解线性方程组(512)
19.2.1约当消去及其串行算法(512)
19.2.2约当消去法的并行算法(514)
19.3小结(517)参考文献(518)
附录全主元高斯消去法并行算法的MPI源程序(519)
第二十章线性方程组的迭代解法(524)
20.1雅可比迭代(524)
20.1.1雅可比迭代及其串行算法(524)
20.1.2雅可比迭代并行算法(526)
20.2高斯-塞德尔迭代(527)
20.2.1高斯-塞德尔迭代及其串行算法(527)
20.2.2高斯-塞德尔迭代并行算法(528)
20.3松弛法(531)
20.3.1松弛法及其串行算法(531)
20.3.2松弛法并行算法(532)
20.4小结(534)
参考文献(534)
附录高斯-塞德尔迭代并行算法的MPI源程序(535)
第二十一章矩阵特征值计算(540)
21.1求解矩阵最大特征值的乘幂法(540)
21.1.1乘幂法及其串行算法(540)
21.1.2乘幂法并行算法(541)
21.2求对称矩阵特征值的雅可比法(543)
21.2.1雅可比法求对称矩阵特征值的串行算法(543)
21.2.2雅可比法求对称矩阵特征值的并行算法(546)
21.3求对称矩阵特征值的单侧旋转法(556)
21.3.1单侧旋转法的算法描述(556)
21.3.2求对称矩阵特征值的单侧旋转法的并行计算(559)
21.4求一般矩阵全部特征值的QR方法(562)
21.4.1QR方法求一般矩阵全部特征值的串行算法(562)
21.4.2QR方法求一般矩阵全部特征值的并行算法(563)
21.5小结(565)
参考文献(566)
附录求对称矩阵特征值的雅可比并行算法MPI源程序(567)
第二十二章快速傅氏变换和离散小波变换(581)
22.1快速傅里叶变换FFT(581)
22.1.1串行FFT迭代算法(581)
22.1.2并行FFT算法(583)
22.2离散小波变换DWT(585)
22.2.1离散小波变换DWT及其串行算法(585)
22.2.2离散小波变换并行算法(588)
22.3小结(590)
参考文献(590)
附录FFT并行算法的MPI源程序(591)
单元V习题(598)
算法索引(607)
MPI源程序清单...(609)
专业术语中英文对照及索引(611)
猜您喜欢