具体描述
这是一本全面介绍近年来并行计算研究进展的著作,主要按照并行性、并行应用、软件技术以及关键技术和算法等方面展开讨论。关于并行性,主要概述了并行计算的各个方面并介绍其所依赖的软、硬件平台;关于并行应用,主要介绍了并行计算在计算流体力学、环境与能源、计算化学,以及其他十几个典型数值和非数值计算领域中的应用;关于软件技术,主要介绍了并行计算的软件基础,包括消息传递和线程、并行I/O、编程语言与编译器、面向对象的并行库、问题求解环境、性能调整与程序调试工具等;关于关键技术和算法,主要介绍了在大量应用领域广泛使用的并行计算技术和并行算法,包括可重用软件与算法、高性能科学模拟中的图剖分问题、网格剖分、模板与数值线性代数、PDE可扩展求解软件、并行连续优化、科学计算路径追踪和自动微分等。本书还列出了近年来与并行计算相关的上千篇参考文献。
本书是一本综合性很强的并行计算专著,可供对并行计算感兴趣的高等院校、研究所、工业和商业部门等各应用领域的研究和工程技术人员参考。
作者简介
目录信息
第1章 引言
1.1 并行计算硬件
1.2 并行应用
1.3 软件和算法
1.4 并行计算科学
第2章 并行机体系结构
2.1 单处理机体系结构
2.2 并行体系结构
2.3 并行体系结构的未来趋势
2.4 小结
第3章 并行编程面临的问题
3.1 体系结构
3.2 程序并行分解
3.3 并行性能优化
3.4 存储层次管理
3.5 并行调试
3.6 性能分析与调整
3.7 并行I/O
3.8 小结
第二部分 并行应用
第4章 一般应用问题
4.1 一个简单例子的应用特征
4.2 求解泊松方程的雅可比方法的通信结构
4.3 一般计算格式的通信开销
4.4 基本复合系统应用模型
4.5 时间步进模拟和事件驱动模拟
4.6 应用问题的时间结构
4.7 基本复合系统并行模型小结
4.8 元计算问题
4.9 小结
第5章 计算流体力学中的并行计算
5.1 计算流体力学概述
5.2 不可压流
5.3 可压流
5.4 小结
第6章 环境和能源科学中的并行计算
6.1 地下流建模
6.2 IPARS和NetSolve网格计算
6.3 IPARS的跟踪与交互式模拟
6.4 地表水模拟
6.5 利用ADR实现流体和输运耦合模拟
6.6 小结
第7章 并行计算化学:NWChem综述
7.1 分子量子化学
7.2 NWChem体系结构
7.3 NWChem中的并行计算支撑模块
7.4 NWChem中的化学相关模块
7.5 NWChem在计算化学领域中的地位
7.6 计算化学算法的共同特征
7.7 小结
第8章 应用综述
8.1 数值广义相对论
8.2 格子量子色动力学的数值模拟
8.3 海洋建模
8.4 地震模拟
8.5 宇宙结构的形成
8.6 计算电磁学
8.7 数据挖掘中的并行算法
8.8 信号和图像处理中的高性能计算
8.9 确定型Monte Carlo方法及其并行化
8.10 光子源拟实时X射线微成像实验
8.11 基于WebHLA的部队建模与仿真元计算环境
8.12 应用的计算结构
8.13 小结
第三部分 各种软件技术
第9章 软件技术
9.1 并行编程技术的选择
9.2 如何获得正确和有效的执行
9.3 小结
第10章 消息传递和线程
10.1 消息传递编程模型
10.2 多线程编程
10.3 小结
第11章 并行I/O
11.1 并行I/O框架
11.2 MPI-IO
11.3 并行I/O优化
11.4 如何获得高的I/0性能
11.5 小结
第12章 编程语言与编译器
12.1 自动并行
12.2 高性能FORTRAN:数据并行编程
12.3 OpenMP:共享存储并行编程
12.4 Co-Array FORTRAN:SPMD编程
12.5 支持技术
12.6 发展趋势
12.7 小结
第13章 面向对象的并行库
13.1 面向对象的并行库
13.2 Java中的面向对象并行编程
13.3 C++多线程计算
13.4 远程函数调用、全局指针和Java RMI
13.5 基于组件的软件设计
13.6 小结
第14章 问题求解环境
14.1 NetSolve:基于网络的解法器:
14.2 基于WebFlow对象的Web计算
14.3 WebPDELab
14.4 其他网格计算环境
14.5 小结
第15章 性能调整和程序调试工具
15.1 正确性和性能监测的基本概念
15.2 测试与调试实现上面临的问题
15.3 编译器的高度集成
15.4 软件工具的界面和使用
15.5 软件工具实例
15.6 面临的挑战和开放性问题
15.7 小结
第16章 二维泊松问题
16.1 数学模型
16.2 简单算法
16.3 泊松方程的并行求解
16.4 增加全局操作
第四部分 关键技术与算法
第17章 可重用的软件和算法
17.1 模板:并行软件的设计模式
17.2 通信器和中性数据结构
17.3 标准的库和组件
17.4 自动微分
17.5 模板和数值线性代数
17.6 小结
第18章 高性能科学模拟的图剖分技术
18.1 网格剖分与图
18.2 静态图剖分技术
18.3 自适应计算的负载平衡
18.4 并行图剖分
18.5 多约束和多目标图剖分
18.6 小结
第19章 网格生成
19.1 网格生成的策略和技术
19.2 网格生成过程和几何预处理
19.3 自适应网格生成
19.4 并行网格生成
19.5 网格生成软件
19.6 网格结构
19.7 与网格生成有关的网址
19.8 几何/网格生成的主要困难
19.9 未来发展方向
19.10 小结
第20章 模板和数值线性代数
20.1 稠密线性代数算法
20.2 计算机体系结构对性能的影响
20.3 稠密线性代数库
20.4 稀疏线性代数方法
20.5 稀疏直接法
20.6 稀疏迭代法
20.7 稀疏特征值问题
20.8 小结
第21章 可扩展的偏微分方程解法软件
21.1 偏微分方程简介
21.2 并行偏微分方程计算的难点
21.3 并行求解策略
21.4 PETSc软件中并行求解偏微分方程的方法
21.5 PDE软件
21.6 小结
第22章 并行连续最优化
22.1 局部最优化
22.2 全局最优化
22.3 直接搜索方法
22.4 相连子系统最优化
22.5 变量与约束分布
22.6 小结
第23章 科学计算中的路径追踪及其在AUTO上的实现
23.1 局部连续
23.2 全局连续和度理论
23.3 折叠和分歧
23.4 实际的路径追踪方法
23.5 分歧点处的分支选择
23.6 计算实例:AUTO
23.7 并行AUTO
23.8 小结
第24章 自动微分
24.1 自动微分概述
24.2 自动微分实现技术
24.3 自动微分软件
24.4 消息传递并行代码的自动微分
24.5 自动微分的高级用法
24.6 小结
第五部分 结 论
第25章 结论和未来发展方向
25.1 计算资源
25.2 应用
25.3 软件
25.4 模板、算法和技术
25.5 未来发展方向
参考文献
术语表
作者介绍
· · · · · · (收起)
读后感
用户评价
这本书的出现,简直是我在漫长学习生涯中的一道曙光!我之前对并行计算的理解,更多地来自于零散的课程和文档,不成体系,也难以深入。而这本书,就像是一张精心绘制的地图,为我清晰地指明了并行计算的来龙去脉。作者的叙述方式非常独特,他巧妙地将一些看似生涩的概念,通过生动的比喻和形象的描述,变得通俗易懂。我尤其赞赏他在介绍各种并行计算模型时,不仅仅是描述它们的特点,更会深入探讨它们背后的设计思想和权衡取舍。例如,他在讲解消息传递模型时,不仅提到了MPI的通信原语,还深入分析了点对点通信和集体通信的性能差异,以及如何通过优化通信模式来提高效率。更重要的是,这本书鼓励读者主动思考,提出问题,并引导读者自己去寻找答案。它提供了一个思考的框架,让我在面对新的并行计算问题时,能够有条理地进行分析和解决。我感觉自己在阅读的过程中,不仅仅是在吸收知识,更是在锻炼一种独立思考和解决问题的能力。这本书绝对是我在并行计算领域的一位良师益友,它的价值远超于一本简单的教科书。
我是一名对计算机底层技术充满好奇的学生,而这本书简直就是我一直在寻找的那块拼图。它不仅仅是关于“怎么做”,更是关于“为什么这么做”。作者在解释各种并行算法和技术时,总是能追溯到最根本的原理,让我理解它们是如何工作的,以及它们在不同场景下的适用性。我非常喜欢他在讲解并行数据结构和算法时,总是会详细分析它们的复杂度和性能开销,以及如何针对不同的硬件平台进行优化。特别是他对内存访问模式、缓存一致性、以及并行数据划分等问题的深入探讨,让我对如何设计高效的并行程序有了更深刻的理解。这本书还让我看到了并行计算在不同领域的应用,从高性能科学计算到大数据分析,再到图形渲染和人工智能,都离不开并行计算的支持。这极大地拓宽了我的视野,让我看到了并行计算的无限可能性。而且,作者在书中对各种并行编程框架和库的介绍,也让我能够更有效地将学到的理论知识应用到实践中。我强烈推荐这本书给所有希望深入理解并行计算原理、并渴望在这一领域有所作为的开发者和研究者。
每次翻开这本书,我都会有一种想要继续探索的冲动。它不仅仅是一本技术书籍,更像是一本关于如何驾驭计算力量的哲学著作。作者以一种非常人性化的方式,将并行计算这个宏大的主题,分解成一个个可以理解的组成部分。我尤其欣赏他在讲解并行化策略时,不仅仅是介绍方法,更会深入探讨不同策略背后的逻辑和考量。例如,他在分析如何进行任务分解和依赖分析时,不仅给出了具体的步骤,还阐述了如何识别和处理数据依赖性,以及如何最小化通信开销。这本书让我明白,并行计算并非一蹴而就,而是一个需要细致分析、精心设计、并且不断优化的过程。而且,作者在讲解过程中,总是能够引用一些经典的案例和研究成果,让我能够站在巨人的肩膀上,更全面地理解并行计算的发展历程和最新进展。我感觉自己在阅读这本书的过程中,不仅获得了技术上的提升,更是在思维方式上得到了升华。这本书让我明白了,并行计算不仅仅是关于速度的提升,更是关于如何更聪明、更有效地利用计算资源。
我是一名对计算机体系结构和性能优化充满兴趣的研究生,而这本书简直就是为我量身打造的。它不仅仅是关于并行编程,更是关于理解并行计算的底层机制以及如何充分发挥硬件的潜力。作者在讲解各种并行计算模型时,总是会深入分析它们与底层硬件的对应关系,例如,共享内存模型如何利用缓存一致性协议,分布式内存模型如何通过网络通信实现数据交换。我尤其欣赏他在讨论并行数据划分和负载均衡时,那种严谨的分析方法,让我能够理解如何设计高效的并行算法,以最小化通信开销和最大化计算效率。这本书让我明白,并行计算并非仅仅是编写多线程代码,更需要深入理解硬件的特性,并根据硬件特点来设计和优化并行程序。而且,作者在书中对各种并行编程框架和库的介绍,以及对性能调优工具的使用指导,也让我能够将学到的理论知识,有效地应用到实际的研究项目中。我强烈推荐这本书给所有希望深入理解并行计算原理,并渴望在高性能计算领域做出贡献的学者和工程师。
我经常会在深夜里,一边喝着咖啡,一边沉浸在这本书的文字中,感觉就像在与一位博学多才的老师进行着一场深入的对话。这本书最吸引我的地方在于,它并没有简单地罗列各种并行计算的技术和工具,而是深入地探讨了并行计算的底层原理和设计哲学。作者以一种抽丝剥茧的方式,将复杂的概念分解开来,让我能够理解为什么某些并行策略会奏效,而另一些则会失效。他对并行性、并发性、同步性等核心概念的解释,清晰而深刻,让我对这些概念有了更透彻的理解。此外,书中对不同并行体系结构,如共享内存、分布式内存、以及混合并行架构的深入分析,也让我对如何根据硬件特点选择合适的并行策略有了更直观的认识。我特别喜欢书中关于“性能可伸缩性”的讨论,它让我意识到,设计一个优秀的并行程序,不仅要考虑如何让它在单个节点上跑得快,更要考虑它在增加节点数量后,性能是否能得到有效的提升。这本书让我从一个“使用者”变成了一个“思考者”,能够更深入地理解并行计算的本质,并具备解决更复杂问题的能力。
这本书就像是我在混沌的技术海洋中找到的一座灯塔,为我指明了前进的方向。我之前对并行计算的理解,总是碎片化的,难以形成一个完整的知识体系。而这本书,以其宏大的视角和严谨的逻辑,将并行计算的各个方面都囊括其中。作者的叙述风格非常独特,他能够将一些抽象的概念,通过生动的比喻和形象的例子,变得触手可及。我特别喜欢他在讲解同步机制和并发控制时,那种深入浅出的讲解方式,让我能够真正理解锁、信号量、原子操作等概念的原理和应用。而且,书中对各种并行编程模型的比较分析,也让我能够根据实际需求,选择最适合的编程模型。更让我惊喜的是,这本书并没有止步于理论,而是结合了大量的实际应用场景,从科学模拟到金融计算,再到机器学习,都展示了并行计算的强大威力。这让我能够看到,自己所学的知识,如何在现实世界中发挥作用。这本书是我在并行计算领域的一位不可多得的良师益友,我非常荣幸能够拥有它。
这本书就像是为我量身定做的一份礼物,我迫不及待地想把它推荐给所有对计算机科学充满热情的朋友们!从我翻开第一页开始,就有一种豁然开朗的感觉。作者用一种非常独特的方式,将并行计算这个原本可能显得晦涩难懂的领域,变得生动有趣,引人入胜。我尤其喜欢它深入浅出的讲解方式,没有那些枯燥乏味的理论堆砌,而是通过大量的实例和图示,让复杂的概念变得易于理解。读这本书,感觉就像是跟着一位经验丰富的向导,一步步探索并行计算的奇妙世界。它不仅仅是介绍性的,更重要的是,它教会了我如何去思考,如何去分析,如何去解决在并行计算领域遇到的实际问题。我发现自己不仅仅在学习知识,更是在培养一种解决问题的能力和一种创新的思维方式。这本书的结构也非常合理,从基础概念讲起,然后逐步深入到更高级的主题,让我能够循序渐进地掌握知识,不会感到 overwhelmed。而且,作者在很多地方都强调了实践的重要性,鼓励读者动手去尝试,去实现,这对于我这样希望将理论与实践相结合的读者来说,简直是太有价值了。我相信,这本书会成为我未来学习和工作中不可或缺的参考资料,我也会一遍又一遍地翻阅它,每次都会有新的收获和启发。
坦白说,在读这本书之前,我对并行计算的认知还停留在比较浅显的层面,觉得它只是关于多核处理器和多线程编程。然而,这本书彻底颠覆了我的认知。它展现了一个更加宏大和深刻的并行计算世界,涵盖了从共享内存并行到分布式内存并行,再到异构计算等多种计算范式。作者用一种非常清晰和有条理的方式,将这些复杂的概念一一呈现,而且非常注重理论与实践的结合。我尤其欣赏它在讲解并行编程模型时,不仅介绍了MPI、OpenMP等经典的并行编程接口,还探讨了更高级的并行抽象和编程模型,这让我对如何更高效地编写并行程序有了全新的认识。书中还花了相当大的篇幅来讨论并行系统的性能优化,包括如何识别瓶颈、如何进行并行化改造、以及如何利用各种工具进行性能分析和调试。这些内容对于提高并行程序的执行效率至关重要。而且,作者并没有回避并行计算中的挑战和难题,而是坦诚地讨论了数据局部性、通信延迟、负载均衡等问题,并提供了相应的策略和方法来克服这些困难。这使得这本书不仅具有学术价值,更具有极强的实践指导意义。我感觉自己就像获得了一本“并行计算的武功秘籍”,掌握了各种高效的“招式”和“心法”,能够在计算领域披荆斩棘。
在浩瀚的书海中,这本书就像是一颗璀璨的明珠,吸引着我不断去探索和学习。我一直对如何让计算机在处理海量数据时更加高效充满好奇,而这本书恰好填补了我在这方面的知识空白。它不仅仅提供了扎实的理论基础,更重要的是,它深入剖析了各种并行计算模型的优势和劣势,以及它们在不同应用场景下的适用性。我印象最深刻的是,作者在讲解分布式并行计算时,详细阐述了通信开销、同步机制等关键问题,并给出了切实可行的解决方案。这让我对构建大规模并行系统有了更清晰的认识。书中对各种并行算法的设计思想和实现技巧也进行了详尽的介绍,例如,如何将一个复杂的计算任务分解成多个子任务,如何有效地在多个处理器之间分配和调度这些任务,以及如何处理数据依赖性和同步问题。这些内容对于我理解和开发高性能计算应用至关重要。更让我惊喜的是,这本书并没有停留在理论层面,而是结合了许多实际案例,从科学计算、大数据分析到人工智能等领域,展示了并行计算的强大威力。这让我能够将学到的知识与实际应用联系起来,看到并行计算在解决现实世界问题中的巨大潜力。我甚至开始尝试着将书中的一些算法思路应用到我自己的项目中,取得了显著的效果。这本书绝对是每一个想要深入了解高性能计算和并行编程的工程师、研究人员和学生的宝贵资源。
我一直对如何让计算机在处理海量数据时更加高效充满好奇,而这本书恰好填补了我在这方面的知识空白。它不仅提供了扎实的理论基础,更重要的是,它深入剖析了各种并行计算模型的优势和劣势,以及它们在不同应用场景下的适用性。我印象最深刻的是,作者在讲解分布式并行计算时,详细阐述了通信开销、同步机制等关键问题,并给出了切实可行的解决方案。这让我对构建大规模并行系统有了更清晰的认识。书中对各种并行算法的设计思想和实现技巧也进行了详尽的介绍,例如,如何将一个复杂的计算任务分解成多个子任务,如何有效地在多个处理器之间分配和调度这些任务,以及如何处理数据依赖性和同步问题。这些内容对于我理解和开发高性能计算应用至关重要。更让我惊喜的是,这本书并没有停留在理论层面,而是结合了许多实际案例,从科学计算、大数据分析到人工智能等领域,展示了并行计算的强大威力。这让我能够将学到的知识与实际应用联系起来,看到并行计算在解决现实世界问题中的巨大潜力。我甚至开始尝试着将书中的一些算法思路应用到我自己的项目中,取得了显著的效果。这本书绝对是每一个想要深入了解高性能计算和并行编程的工程师、研究人员和学生的宝贵资源。