The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity.1 By describing the algorithms and designs that have worked well in the past, we hope to help you avoid at least some of the pitfalls that have beset parallel projects. But you should think of this book as a foundation on which to build, rather than as a completed cathedral. Your mission, if you choose to accept, is to help make further progress in the exciting field of parallel programming, progress that should in time render this book obsolete. Parallel programming is not as hard as it is reputed, and it is hoped that this book makes it even
easier for you.
1
Introduction
1.1 Historic Parallel Programming Difficulties . . . . . . . . . . . . . . . . .
1.2 Parallel Programming Goals . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 Productivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 Generality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Alternatives to Parallel Programming . . . . . . . . . . . . . . . . . . . .
1.3.1 Multiple Instances of a Sequential Application . . . . . . . . . .
1.3.2 Make Use of Existing Parallel Software . . . . . . . . . . . . . .
1.3.3 Performance Optimization . . . . . . . . . . . . . . . . . . . . .
1.4 What Makes Parallel Programming Hard? . . . . . . . . . . . . . . . . .
1.4.1 Work Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.2 Parallel Access Control . . . . . . . . . . . . . . . . . . . . . . .
1.4.3 Resource Partitioning and Replication . . . . . . . . . . . . . . .
1.4.4 Interacting With Hardware . . . . . . . . . . . . . . . . . . . . .
1.4.5 Composite Capabilities . . . . . . . . . . . . . . . . . . . . . . .
1.4.6 How Do Languages and Environments Assist With These Tasks? .
1.5 Guide to This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 Quick Quizzes . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.2 Sample Source Code . . . . . . . . . . . . . . . . . . . . . . . .
2 Hardware and its Habits
2.1 Overview . . . . . . . . . . . . . . .
2.1.1 Pipelined CPUs . . . . . . . .
2.1.2 Memory References . . . . .
2.1.3 Atomic Operations . . . . . .
2.1.4 Memory Barriers . . . . . . .
2.1.5 Cache Misses . . . . . . . . .
2.1.6 I/O Operations . . . . . . . .
2.2 Overheads . . . . . . . . . . . . . . .
2.2.1 Hardware System Architecture
2.2.2 Costs of Operations . . . . . .
2.3 Hardware Free Lunch? . . . . . . . .
2.3.1 3D Integration . . . . . . . .
2.3.2 Novel Materials and Processes
2.3.3 Special-Purpose Accelerators
2.3.4 Existing Parallel Software . .
2.4 Software Design Implications . . . . .
...
FloTHERM软件基础与应用实例-(第二版) 本书特色 本书分为软件基础入门与应用实例两大部分,全书共计17章节。1~11章节为软件基础入门,其内容以热仿真工...
《错觉》内容简介:在人工智能异常火热的今天,很多人认为我们生活在一个不可思议的历史时期,人工智能和大数据可能比工业革命更能
机器人技术基础 内容简介 本书系统地介绍了机器人的基础理论和关键技术。主要内容包括:机器人的机构、位姿描述和齐次变换、操作臂运动学、操作臂的雅可比、操作臂动力学...
《智慧工厂技术与应用》内容简介:智慧工厂是现代工厂信息化发展的新阶段,是在数字化工厂的基础上,利用物联网技术和设备监控技术
《Kafka入门与实践》内容简介:本书中的大量实例来源于作者在实际工作中的实践,具有现实指导意义。相信读者阅读完本书之后,能够全
《HotSpot实战》深入浅出地讲解了HotSpot虚拟机的工作原理,将隐藏在它内部的本质内容逐一呈现在读者面前,包括OpenJDK与HotSpot
本书通过实例制作的方式介绍了如何制作像素画。使用的软件以Photoshop为主,同时也介绍了一些专业软件。本书共分4章,第1章是像素
面孔识别框架下的注意瞬脱效应 内容简介 注意瞬脱是指在快速闪现的刺激流中同时完成两个目标刺激的操作时发生的对第二个目标不容易加工的现象。《脑与认知科学研究系列:...
《以房养老:理念与模式》内容简介:以房养老理论与建立在其上的反向抵押贷款的研究,前者是一种理念,一种横跨房地产、金融保险、
《且介亭杂文》内容简介:本书是鲁迅1934年所作杂文三十六篇,1935年末经作者亲自编定,1937年7月由上海三闲书屋初版。包括《拿来主
《OpenStack高可用集群(下册)》内容简介:本书从OpenStack终端用户的角色出发,以面向生产系统的OpenStack高可用集群建设为主线,
《通信原理学习辅导与考研指导》(第6版)是以樊昌信教授和曹丽娜教授编著的《通信原理》(第6版)教材为主要参考书,同时参考其他相
《Lua 程序设计(第4版)》内容简介:本书由Lua语言作者亲自撰写,针对Lua语言本身由浅入深地从各个方面进行了完整和细致的讲解。作
在本书中,Lakos介绍了将大型系统分解成较小且较好管理的组件层次结构(不是继承)的过程。这种具有非循环物理依赖的系统的维护、
神经网络控制已发展成为“智能控制”的一个新的分支,属先进控制技术,为解决复杂的非线性、不确定、不确知系统的控制问题,开辟
《漫画诺贝尔科学家:化学奖》内容简介:诺贝尔奖通常被认为是世界上所有颁奖领域内最重要的奖项。诺贝尔奖将人类引向了科学和未来
数据结构基础(C语言版)(第2版) 本书特色 《数据结构基础(C语言版)(第2版)》不仅可以作为计算机及相关专业本科生“数据结构”课程的教材,也可以作为研究生*...
数据结构(C语言描述)学习指导与习题解答 本书特色 本书既可与《数据结构 (C语言描述)》一书配套使用,也可与其他C语言描述的数据结构教材配套使用,还可作为考研...
很多程序员及软件设计师都认为,用c++开发意味着放弃程序性能提升的可能。在很多人眼里,使用c++来开发那些效率至上的应用无疑将
《牢记使命:中国共产党为什么能砥砺奋进》内容简介:黄相怀著的《牢记使命:中国共产党为什么能砥砺奋进》紧扣党的十九大精神,以