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 . . . . .
...
五笔字型1日练成:2007版 本书特色 本书阐述五笔字型输入法的基础知识,字根的分布规律,然后再以大量的实例,讲述五笔字型汉字拆分方法。本书附有86版,98版五...
《人生谁能无补丁》内容简介:作为著名散文家和学者,梁衡先生曾说,人生不如意事常八九,有低谷、叹息、哭泣与遗憾,但这就是人生
《符号学产品设计方法》基于符号学的视野,结合语言学、传播学、文化学、社会学、心理学等相关概念、原理和分析方法,对产品设计
《Altium Designer 18电路设计从入门到精通(第2版)》内容简介:全书以Altium Designer 18版本为平台,介绍了电路设计的方法和技巧
《物理化学》是教育部“高等教育面向21世纪教学内容和课程体系改革计划”的研究成果,是面向21世纪课程教材。《物理化学》共5篇2
《神好多的日本》内容简介:★说文解字,日本“八百万”神明,一目了然。神社神明一一对应,日本神社观光不再走马观花。★视角新颖
React全栈-Redux+Flux+Webpack+Babel整合开发 本书特色 本书从现代前端开发的标准、趋势和常用工具入手,由此引出了优秀的构建工具web...
跟我学SEO从入门到精通 本书特色 本书从实战出发,少有理论,目的是让绝大多数seo初学者以及从业人员感觉有可操作性,不会有云里雾里的感觉。书中穿插介...
《R用户Python学习指南:数据科学方法》内容简介:掌握一门语言、一种工具已不足以应对当今的数据分析任务,本书旨在解决这一问题,
DonBox是微软公司的架构师,主要研究方向为下一代Web服务协议和程序设计模型。Don是软件集成技术方面的权威。在上世纪90年代,他
《核技术解读中医药千年奥秘》内容简介:本书为“走进美丽的核科学世界系列”之一,主要内容包括核医学成像、放射性药物、放射性核
《Node.js实战(双色)》通过8个实例讲解了Node.js在实战开发中的应用,涉及Node.js常用框架、非关系型数据库、关系型数据库、运
本书全面而深入地介绍了GNU/Linux编程。首先介绍了在Linux上编程必备的编程工具,然后在库函数、系统调用以及内核上阐述Linux编程
本书助您轻松体验Cocoa开发,不仅是阅读,还有动手实践。介绍完Xcode和InterfaceBuilder之后,您将很快接触到Objective-C的面向对
《创业不可不防的法律风险》内容简介:我国民营企业的平均寿命只有2.9年,而日本、美国的数据是我们的十多倍。主要原因在于许多创业
《Kotlin语言实例精解》内容简介:本书详细阐述了与Kotlin开发相关的基本解决方案,主要包括俄罗斯方块游戏、设计并实现Messenger后
Thisbookisapracticalguidefilledwithreal-worldexamplesthatwillhelpyoudiscovertheb...
ReceivedSecondplaceinthePopularCulturecategorygivenbyForeWordMagazineOvertimeand...
《失控的真相》内容简介:在信息泛滥的时代,知识变得无处不在。鼠标轻轻一点,我们就坐拥一座巨型图书馆。然而,我们并没有因此就
ThedevelopmentoftheSemanticWeb,withmachine-readablecontent,hasthepotentialtorevo...