具体描述
作者简介
目录信息
第1章 并行编程的模式语言 1
1.1 引言 1
1.2 并行编程 2
1.3 设计模式和模式语言 3
1.4 并行编程的模式语言 4
第2章 并行计算的背景和术语 5
2.1 并行程序与操作系统的并发性比较 5
2.2 并行体系结构简介 5
2.2.1 Flynn分类法 6
2.2.2 MIMD的进一步分类 7
2.2.3 小结 9
2.3 并行编程环境 9
2.4 并行计算术语 12
2.5 并行计算的度量 14
2.6 通信 16
2.6.1 延迟和带宽 16
2.6.2 重叠通信和计算与隐藏延迟 16
2.7 本章小结 17
第3章 “寻找并发性”设计空间 18
3.1 设计空间简介 18
3.1.1 概述 19
3.1.2 使用分解模式 19
3.1.3 示例的背景 19
3.2 任务分解模式 21
3.3 数据分解模式 25
3.4 分组任务模式 28
3.5 排序任务模式 30
3.6 数据共享模式 32
3.7 设计评估模式 35
3.8 本章小结 39
第4章 “算法结构”设计空间 40
4.1 概述 40
4.2 选择一种算法结构模式 41
4.2.1 目标平台 41
4.2.2 主要组织原则 42
4.2.3 算法结构决策树 42
4.2.4 重新评估 43
4.3 示例 44
4.3.1 医学成像 44
4.3.2 分子动力学 44
4.4 任务并行模式 45
4.5 分治模式 52
4.6 几何分解模式 56
4.7 递归数据模式 70
4.8 流水线模式 75
4.9 基于事件的协作模式 84
第5章 “支持结构”设计空间 88
5.1 概述 88
5.1.1 程序构造模式 88
5.1.2 表示数据结构的模式 89
5.2 面临的问题 89
5.3 模式的选择 91
5.4 SPMD模式 92
5.5 主/辅助进程模式 105
5.6 循环并行模式 113
5.7 派生/连接模式 125
5.8 共享数据模式 129
5.9 共享队列模式 137
5.10 分布式数组模式 151
5.11 其他支持结构 161
5.11.1 SIMD 162
5.11.2 MPMD 162
5.11.3 客户-服务器计算 163
5.11.4 使用声明语言的并发编程 163
5.11.5 问题求解环境 164
第6章 “实现机制”设计空间 165
6.1 概述 166
6.2 UE的管理 166
6.2.1 线程的创建/销毁 166
6.2.2 进程的创建/销毁 167
6.3 同步 168
6.3.1 存储器同步和围栅 169
6.3.2 栅栏 172
6.3.3 互斥 175
6.4 通信 182
6.4.1 消息传递 182
6.4.2 集合通信 188
6.4.3 其他通信构造 193
附录A OpenMP简介 195
A.1 核心概念 195
A.2 结构块和指令格式 198
A.3 工作分摊法 199
A.4 数据环境子句 202
A.5 OpenMP运行时库 204
A.6 同步 205
A.7 调度子句 208
A.8 本附录小结 210
附录B MPI简介 211
B.1 概念 211
B.2 启动 212
B.3 基本的点到点消息传递 214
B.4 集合操作 216
B.5 高级的点到点消息传递方法 220
B.6 MPI和FORTRAN 224
B.7 本附录小结 226
附录C Java并发编程简介 227
C.1 线程的创建 228
C.1.1 匿名的内部类 229
C.1.2 Executor和工厂方法 230
C.2 原子性、存储器同步和volatile关键字 232
C.3 同步块 232
C.4 等待并通知 234
C.5 锁 235
C.6 其他同步机制和共享数据结构 237
C.7 中断 238
术语表 239
参考文献 249
· · · · · · (收起)
读后感
1、如果下载软件时遇到了这样的提示,我和你一起多思考,为什么?我要如何做? If you already have a download account, you may login. If you do not have a download account, you may call us to request one. However please note that U.S. Federal Law prohibits expor...
1、如果下载软件时遇到了这样的提示,我和你一起多思考,为什么?我要如何做? If you already have a download account, you may login. If you do not have a download account, you may call us to request one. However please note that U.S. Federal Law prohibits expor...
1、如果下载软件时遇到了这样的提示,我和你一起多思考,为什么?我要如何做? If you already have a download account, you may login. If you do not have a download account, you may call us to request one. However please note that U.S. Federal Law prohibits expor...
1、如果下载软件时遇到了这样的提示,我和你一起多思考,为什么?我要如何做? If you already have a download account, you may login. If you do not have a download account, you may call us to request one. However please note that U.S. Federal Law prohibits expor...
1、如果下载软件时遇到了这样的提示,我和你一起多思考,为什么?我要如何做? If you already have a download account, you may login. If you do not have a download account, you may call us to request one. However please note that U.S. Federal Law prohibits expor...
用户评价
这是一本令人耳目一新的关于并行编程的书。它没有大篇幅地讲解某个特定语言的语法细节,而是聚焦于并行编程领域中那些普适性的、跨语言的“模式”。这就像是学习建筑学,你首先要掌握的是力学原理、空间布局等基本规律,而不是去纠结于某种特定的砖瓦材料。书中对“Pipeline”、“Worker Pool”等模式的讲解,让我清晰地看到了如何将一个大的计算任务分解成更小的、可并行执行的子任务,以及如何有效地管理这些任务的执行和数据流。这种对“模式”的抽象和提炼,极大地提升了我的抽象思维能力。我不再需要从零开始为每一个并发场景摸索解决方案,而是可以借鉴书中提供的成熟的设计思想。它让我明白了,很多看似复杂的问题,都可以通过组合和应用这些基本的并行模式来解决。这种“模式驱动”的方法,不仅提高了我的编程效率,更重要的是,它让我能够更有信心地去设计和实现复杂的并行系统。这本书让我从一个“代码实现者”转变为一个“系统设计者”,为我日后处理更具挑战性的并行计算任务打下了坚实的基础。
当我翻开《并行编程模式》,我期待的是一本能够指引我如何实际操作的书,但它所提供的,是一种更深层次的理解。它没有直接给出“这样做”的指令,而是告诉我“为什么这样做”以及“在什么情况下这样做”。书中对于“Event-Driven Architecture”和“MapReduce”等模式的介绍,让我看到了并行处理不同类型任务的通用策略。它让我明白了,很多时候,我们所遇到的问题,在其他领域、甚至在遥远的过去,已经有成熟的解决方案。这本书就是将这些智慧的结晶提炼出来,并以一种易于理解的方式呈现给我。它让我不再局限于当前的技术栈,而是能够放眼于整个并行计算的生态系统。通过学习这些模式,我学会了如何分析问题的本质,如何识别其中可以并行化的部分,以及如何选择最合适的工具和方法来解决问题。它就像是一本“并发编程的武功秘籍”,教我如何运用内力,而不是仅仅招式。这种对底层原理的深入理解,让我能够更好地适应不断变化的技术环境,并自信地应对各种新的挑战。
这本书最吸引我的地方在于它所传递的“思维方式”。它并非一本枯燥的理论教材,而是充满了对实际问题的洞察和对解决方案的巧妙设计。它让我明白,并行编程并非是简单的“多线程”叠加,而是一门需要精心设计和周密思考的艺术。《并行编程模式》中对“Task Decomposition”和“Data Parallelism”等模式的阐述,让我看到了如何有效地将复杂任务分解成更小、独立的单元,并充分利用多核处理器的能力。它让我学会了如何从全局角度去审视程序的性能瓶颈,以及如何通过应用不同的并行模式来优化资源利用率。书中对各种模式的优缺点分析,以及它们适用的场景,为我提供了宝贵的参考。这让我不再是盲目地尝试各种方法,而是能够更有针对性地选择最佳的解决方案。它帮助我建立起一套清晰的并行编程思维框架,让我能够更好地理解、设计和实现高性能的并行系统。这本书就像是一位经验丰富的导师,在并行编程的道路上,为我指明了方向,并教会了我如何独立思考和解决问题。
这本《并行编程模式》就像一本为我量身定做的探险地图,虽然它并没有直接告诉我如何构建某个特定的并发系统,但它提供的指导原则和思考框架,让我能够清晰地看到前方的道路。读完之后,我不再只是被动地处理并发中的一个个技术难题,而是能够从更宏观的视角审视问题。书中对各种模式的剖析,不是简单罗列代码示例,而是深入挖掘了每种模式背后的设计思想,以及它在解决特定问题时所扮演的角色。这让我意识到,很多时候,问题的症结并非在于语言本身的某个特性,而是我们对并发机制的理解是否到位。例如,书中关于“共享内存与消息传递”的讨论,让我深刻理解了在不同场景下选择哪种通信方式的权衡。这种“授人以渔”的方式,让我仿佛获得了一种“内功心法”,一旦掌握,便能触类旁通,举一反三。即使书中所举的例子并非完全适用于我当前的工作,但其背后蕴含的逻辑和思维方式,却能极大地启发我思考如何在我的项目中找到最合适的解决方案。它让我从“知其然”上升到“知其所以然”的境界,为我构建更健壮、更高效的并行程序打下了坚实的基础。
这本书给我带来的最大价值,在于它极大地拓宽了我对并发编程的认知边界。在阅读之前,我可能还停留在对锁、线程池等基本概念的层面,对更高级的抽象和更优的解决方案缺乏深入了解。《并行编程模式》就像一位经验丰富的向导,带领我穿越了并发编程的迷宫,让我看到了那些隐藏在表面之下的精妙设计。书中对不同模式的介绍,不仅仅是概念的讲解,更多的是对这些模式如何在实际应用中解决问题的深入剖析。我尤其喜欢书中对“Future/Promise”和“Actor模型”的详细阐述,它们提供了完全不同的解决并发问题的思路,让我得以从更广阔的视角来思考如何管理异步操作和并发交互。通过学习这些模式,我学会了如何更好地组织代码,如何更有效地隔离并发任务,以及如何处理那些令人头疼的竞态条件和死锁问题。这本书让我意识到,并非所有并发问题都需要通过重量级的锁来解决,很多时候,更轻量级、更富有表现力的模式能带来更好的性能和更高的可维护性。它激发了我对代码设计和架构的思考,让我不再满足于仅仅实现功能,而是追求更优雅、更健壮的解决方案。
应该是很不错的,理论性太强,没怎么看,只能说应该
学校课程教材,但基本期末才翻了一翻。没仔细深入看。 四步的设计模式挺有收获的。 但建议每章后的小例子可以不看..领域性有点强,比如蛋白质什么的 翻译还行吧。有两个词挺疑惑(PE,UE),后来是翻原版书才搞懂的,看英文比较容易理解,就是process of execution和unit of element 以后有疑惑再翻翻
应该是很不错的,理论性太强,没怎么看,只能说应该
领域性太强
领域性太强