《计算机科学丛书:高性能科学与工程计算》从工程实践的角度介绍了高性能计算的相关知识。主要内容包括现代处理器的体系结构、为读者理解当前体系结构和代码中的性能潜力和局限提供了坚实的理论基础。接下来讨论了高性能计算中的关键问题,包括串行优化、并行、OpenMP、MPI、混合程序设计技术。作者根据自身的研究也提出了一些前沿问题的解决方案,如编写有效的C++代码、GPU编程等。
Introduction to High Performance Computing for Scientists and Engineers
出版者的话
译者序
序
前言
缩略词
第1章 当代处理器
1.1 存储程序的计算机体系结构
1.2 基于高速缓存的通用微处理器体系结构
1.2.1 性能指标和基准测试
1.2.2 晶体管:摩尔定律
1.2.3 流水线
1.2.4 超标量
1.2.5 SIMD
1.3 存储层次
1.3.1 高速缓存
1.3.2 高速缓存映射
1.3.3 预取
1.4 多核处理器
1.5 多线程处理器
1.6 向量处理器
1.6.1 设计原理
1.6.2 最高性能估计
1.6.3 程序设计
习题
第2章 串行代码基本优化技术
2.1 标量剖析
2.1.1 基于函数和代码行的程序剖析
2.1.2 硬件性能计数器
2.1.3 手工代码插入
2.2 优化常识
2.2.1 少做工作
2.2.2 避免耗时运算
2.2.3 缩减工作集
2.3 小方法,大改进
2.3.1 消除常用子表达式
2.3.2 避免分支
2.3.3 使用SIMD指令集
2.4 编译器作用
2.4.1 通用优化选项
2.4.2 内联
2.4.3 别名
2.4.4 计算准确性
2.4.5 寄存器优化
2.4.6 利用编译日志
2.5 C++优化
2.5.1 临时变量
2.5.2 动态内存管理
2.5.3 循环与迭代器
习题
第3章 数据访存优化
3.1 平衡分析与lightspeed评估
3.1.1 基于带宽的性能建模
3.1.2 STREAM 基准测试
3.2 存储顺序
3.3 案例分析:Jacobi算法
3.4 案例分析:稠密矩阵转置
3.5 算法分类和访存优化
3.5.1 O(N)/O(N)
3.5.2 O(N2)/O(N2)
3.5.3 O(N3)/O(N2)
3.6 案例分析:稀疏矩阵向量乘
3.6.1 稀疏矩阵的存储机制
3.6.2 JDS sMVM优化
习题
第4章 并行计算机
4.1 并行计算模式分类
4.2 共享存储计算机
4.2.1 cache一致性
4.2.2 UMA
4.2.3 ccNUMA
4.3 分布式存储计算机
4.4 混合型系统
4.5 网络
4.5.1 网络的基本性能特征
4.5.2 总线
4.5.3 交换网络和胖树网络
4.5.4 Mesh 网络
4.5.5 混合网络
习题
第5章 并行性基础
5.1 为什么并行化
5.2 并行性
5.2.1 数据并行性
5.2.2 功能并行性
5.3 并行扩展性
5.3.1 限制并行执行的因素
5.3.2 可扩展性指标
5.3.3 简单可扩展性定律
5.3.4 并行效率
5.3.5 串行性能与强可扩展性
5.3.6 改进的性能模型
5.3.7 选择正确的扩展性基准
5.3.8 案例分析:低速处理器计算机能否变得更快
5.3.9 负载不均衡
习题
第6章 使用OpenMP进行共享存储并行编程
6.1 OpenMP简介
6.1.1 并行执行
6.1.2 数据作用域
6.1.3 循环的OpenMP工作共享
6.1.4 同步
6.1.5 归约
6.1.6 循环调度
6.1.7 任务
6.1.8 其他方面
6.2 案例分析:OpenMP并行实现Jacobi算法
6.3 高级OpenMP:波前并行化
习题
第7章 高效OpenMP编程
7.1 OpenMP程序性能分析
7.2 性能缺陷
7.2.1 减轻Open MP共享区开销
7.2.2 决定短循环的OpenMP开销
7.2.3 串行化
7.2.4 伪共享
7.3 案例分析:并行稀疏矩阵向量乘
习题
第8章 ccNUMA体系结构的局部性优化
8.1 ccNUMA的局部访问
8.1.1 首次访问方式分配页面
8.1.2 通过其他方式的局部性访问
8.2 案例分析:稀疏MVM的ccNUMA优化
8.3 页面布局缺陷
8.3.1 非NUMA友好的OpenMP调度
8.3.2 文件系统高速缓存
8.4 C++中的ccNUMA问题
8.4.1 对象数组
8.4.2 标准模板库
习题
第9章 使用MPI进行分布式存储并行内存编程
9.1 消息传递
9.2 MPI简介
9.2.1 一个简单例子
9.2.2 消息和点对点通信
9.2.3 集合通信
9.2.4 非阻塞点对点通信
9.2.5 虚拟拓扑
9.3 实例:Jacobi解法器的MPI并行
9.3.1 MPI实现
9.3.2 性能特征
习题
第10章 高效MPI编程
10.1 MPI性能工具
10.2 通信参数
10.3 同步、串行化和竞争
10.3.1 隐式串行化和同步
10.3.2 竞争
10.4 降低通信开销
10.4.1 最优化区域分解
10.4.2 聚合消息
10.4.3 非阻塞与异步通信
10.4.4 集合通信
10.5 理解节点内点对点通信
习题
第11章 MPI与OpenMP混合编程
11.1 基本MPI/OpenMP混合编程模型
11.1.1 向量模式实现
11.1.2 任务模式实现
11.1.3 案例分析:混合Jacobi解法器
11.2 MPI线程交互分类
11.3 混合分解及映射
11.3.1 每个节点一个MPI进程
11.3.2 每个插槽一个MPI进程
11.3.3 每个插槽多个MPI进程
11.4 混合编程的优势和劣势
11.4.1 改善的收敛速度
11.4.2 共享高速缓存中的数据重用
11.4.3 利用额外级别的并行性
11.4.4 重叠MPI通信和计算
11.4.5 减少MPI开销
11.4.6 多级别开销
11.4.7 向量模式下批量同步通信
附录A 多核环境中的拓扑和亲缘性
A.1 拓扑
A.2 线程和进程分布
A.2.1 外部亲缘性工具
A.2.2 程序控制亲缘性
A.3 非页面首次访问分配策略
附录B 习题解答
参考文献
Georg Hager和Gerhaid Wellein在本书中为科学家和工程师循序渐进地介绍了高性能计算知识。本书的风格和讲解方法十分易读并容易理解。
二十多年前提出的计算建模和模拟的概念已经成为理论研究和实验研究之外的第三种科学研究方法,软件、数学模型和算法是科学计算领域的关键核心。并行硬件的发展十分迅猛,特别是以指数速度增长的处理器性能以及处理器体系结构和超级计算机系统设计的研究。当计算建模和模拟成为科学研究的第三种方法后,复杂软件及其生态系统将会处于本研究领域的核心地位。
在应用层,科学必须展现为数学模型,并进一步表达为算法和对应的软件代码。相应地,大部分科学基金也在转向这样的项目,即需要领域科学家、计算机科学家及应用数学家协同合作,从原始科学构想到最终可执行软件的研究。这样的项目也需要数学库、协议和系统软件等这些需要花费数年开发并需要持久维护的大规模底层架构的支持,这些软件通常比最初设计的硬件平台甚至是设计和开发人员存活更长时间。
本书覆盖了当代处理器体系结构的基础知识,以及为科学计算程序有效地利用硬件特性进行串行优化的基本技术。作者讨论了数据移动中的关键问题并辅以实例,并以简单易读的方式介绍了高性能计算中的重要问题。书中还讨论了共享存储、非一致访问以及分布式存储的并行化方法。除此之外,还重点介绍了常用的并行编程模型,例如.OpenMP、MPI以及混合编程方法。
我们生活在一个高效利用超级计算机系统进行大规模高性能计算的时代。本书对并行理论、优化技术、体系结构和现代高性能计算系统软件等方面进行了介绍,特别是对科学和工程问题的关注使得本书成为一本独特的教材,因此我强烈向科学家和工程师推荐此书,本书可以作为一本优秀的参考书,我相信本书会令大多数读者受益。
Jack Dongarra
美国田纳西大学
作为一名多年从事工程计算的从业者,我深知高性能计算对于提升工程效率和突破技术瓶颈的重要性。这本书的出现,无疑为我带来了新的启示和更广阔的视野。书中对实际工程应用案例的分析,让我看到了高性能计算在解决实际工程问题中的强大威力。例如,书中对流体力学模拟、结构力学分析等领域的案例进行了解读,详细阐述了如何利用高性能计算来加速这些复杂问题的求解。我尤其关注书中关于高性能存储和I/O的讨论,这对于处理大规模科学数据集至关重要。书中对数据管理、并行文件系统等方面的介绍,为我提供了宝贵的参考。此外,书中还探讨了如何利用并行计算来加速机器学习和深度学习在科学研究中的应用,这让我看到了未来科学计算的新方向。这本书的价值在于它将理论知识与实际应用紧密结合,让我能够更好地理解和运用高性能计算来解决工程中的挑战。它不仅提升了我对技术的理解,更激发了我对创新性解决方案的思考。
评分我一直对算法分析和设计有着浓厚的兴趣,而这本书恰恰满足了我对这方面的求知欲。它并非泛泛而谈,而是专注于高性能计算的语境下,对算法的效率和并行性进行了深入的剖析。书中详细讲解了如何评估算法的时间复杂度和空间复杂度,以及在并行环境下,如何考虑通信开销、负载均衡等因素。我特别欣赏作者在讲解过程中,不厌其烦地列举了大量的实例,从简单的排序算法到复杂的数值计算方法,都进行了详尽的分析。例如,在介绍矩阵乘法时,作者不仅给出了传统的O(n^3)算法,还探讨了Strassen算法等更优的并行算法,并详细解释了它们在并行计算中的优势和劣势。书中对并行算法的展开方式,让我能够理解不同算法在不同硬件架构下的表现差异,以及如何根据具体问题选择最合适的算法。此外,书中还提到了关于算法逼近和随机算法的内容,这为我打开了新的思路,认识到并非所有问题都能找到精确解,而近似解在某些场景下同样具有重要的价值。总而言之,这本书极大地提升了我对算法的理解深度,让我能够更批判性地审视和设计计算方案。
评分我一直以来都对计算科学的理论基础非常感兴趣,而这本书恰恰满足了我在这方面的需求。它不仅仅是一本技术性的著作,更是对高性能计算背后深层次数学和理论原理的深刻阐释。书中对计算模型、算法复杂性理论,以及数值分析的深入探讨,让我对科学计算有了更坚实的理论支撑。我尤其欣赏作者在讲解过程中,对于数学公式的严谨推导和理论的清晰论证。例如,在解释某些优化算法的收敛性时,作者会详细地给出数学证明,让我能够理解其背后的逻辑。书中关于离散化方法、误差分析等内容的讲解,让我明白了在进行数值计算时,如何控制误差,如何保证计算结果的准确性。此外,书中还涉及了偏微分方程的数值解法,如有限元方法、有限差分方法等,这些都是科学计算中的核心内容。作者对这些方法的推导和分析,让我得以深入理解它们的工作原理,以及在不同应用场景下的适用性。这本书的阅读体验,就像是在进行一次严谨的学术探索,每一页都充满了智慧的光芒。
评分这本书的出版,让我对“高性能科学与工程计算”这个领域有了全新的认识。一直以来,我对复杂的科学计算问题充满了好奇,但总觉得门槛很高,难以窥探其精髓。读完这本书,我才明白,原来这些看似高深的计算背后,有着如此精妙的设计和严谨的理论支撑。书中不仅讲解了高性能计算的基本原理,还深入探讨了各种并行计算模型和算法优化技术,例如数据并行、任务并行,以及如何有效地利用多核处理器、GPU等硬件资源。我尤其印象深刻的是关于并行算法的介绍,作者通过生动的例子,清晰地阐释了如何将一个复杂的计算任务分解成多个可并行执行的部分,以及如何解决数据同步和通信问题。书中对各种经典并行算法的分析,如矩阵乘法、快速傅里叶变换等,更是让我茅塞顿开。此外,书中还涉及了分布式计算、高性能存储等内容,为我构建了一个完整的科学计算生态系统图景。这本书的深度和广度都让我惊叹,它不仅仅是一本技术手册,更是一次对计算科学前沿的探索之旅。对于任何希望深入了解高性能计算的读者来说,这本书都是不可多得的宝贵财富。它让我看到了科学计算在解决实际问题中的巨大潜力,也激发了我进一步学习和研究的动力。
评分这本书为我打开了通往科学计算世界的一扇大门。作为一名对科学研究充满热情的学生,我常常遇到需要处理海量数据和进行复杂模拟的场景,但传统的计算方法往往显得力不从心。这本书的出现,让我看到了突破瓶颈的希望。它系统地介绍了各种高性能计算的技术和方法,从底层的硬件架构到上层的软件工具,都进行了详尽的阐述。我印象最深刻的是书中关于并行编程模型的部分,如MPI和OpenMP。作者通过清晰的图示和代码示例,生动地展示了如何编写并行程序,以及如何利用这些模型来加速计算。我尝试着将书中的一些并行编程技巧应用到我自己的项目中,取得了显著的提效,这让我对高性能计算的实际应用价值有了切身体会。此外,书中还涉及了数值积分、微分方程求解等科学计算的经典问题,并探讨了如何利用高性能计算来解决这些问题。这让我明白,高性能计算并非仅仅是理论上的概念,而是能够实实在在地解决科学研究中的实际难题。这本书的价值在于它既有深度又有广度,为我提供了一个全面的知识体系,为我未来的科学探索铺平了道路。
评分正版图书,内容不错!
评分good
评分亮点在于串行代码优化
评分好好好好好好好好好好
评分活动买的很划算,字数字数
评分书很好,送货为非常快!!!!!
评分物流有点慢了
评分很好的一本书,软硬件并重
评分书看起来很不错,很好很强大,很给力,很喜欢哦
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有