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 . . . . .
...
《思维导图:古诗词满分学习法》内容简介:背诵古诗词是中学生的一大难题,很多学生都是背了忘,忘了又背,鉴于此作者想到了让古诗
地理信息系统导论 内容简介 本书是地理信息系统的入门教材,融GIS基本概念、基本原理和应用技能训练为一体,结构体系考究、内容针对性强、条理清晰、图文并茂、深入浅...
群体智能是近年来发展迅速的人工智能学科领域.通过研究分散,自组织的动物群体和人类社会的智能行为,学者们提出了许多迥异于传统思
《现代对位及其赋格》内容简介:《现代对位及其赋格》通过探讨20世纪现代音乐的复调思维、对位技术及其在赋格中的应用,力求从流派
Ruby for Rails-(中文版) 本书特色 本书是一部专门为Rails实践而写的经典Ruby著作,由四部分组成,共17章。**部分讲述Ruby和Rail...
语音处理及人机交互技术 本书特色 《语音处理及人机交互技术/智能科学技术著作丛书》是在作者张毅、刘想德、罗元多年从事服务机器人及信息无障碍技术的基础上总结所取得...
《Ajax实战实例详解》堪称Ajax领域内的典范之作,深受读者好评。它以Ajax的简要介绍开篇,然后以知识点为脉络,讲述了几十个易于
Combinatorylogicandlambda-calculus,originallydevisedinthe1920s,havesincedevelope...
《Spring2企业应用开发》是一部权威的实战指南,由Spring开发团队撰写,全面讲述了Spring2企业应用开发。主要涵盖SpringFramewor
《电商战略》内容简介:要么被趋势打败,要么顺势而为。在互联网+时代,传统企业转型互联网是大势所趋。本书是传统企业及时代下的个
《工业大数据分析算法实战》内容简介:《工业大数据分析算法实践》以工业大数据的特点和需求为牵引,阐述了工业大数据分析的算法与
《互联网金融原理与法律实务》内容简介:《互联网金融原理与法律实务》以互联网金融为主题,分别从原理、法律实务和审判案例几方面
《常春藤英语(精编版·六级)》内容简介:本书根据《常春藤英语·六级(上下)》两本书进行修订,从中选取难度相对较低的文本,并
《当代中国高等教育》内容简介:教育规划纲要颁布实施以来,高等教育改革的进程如火如荼。那么在改革的过程中我们遇到了哪些矛盾和
CSSismessy.Atleast,italwaysseemstogetmessyasprojectsandteamsgrowinsize.Ifyou’vee...
DiveintogamedevelopmentandcreategreatmultiplayeronlinegameswithProAndroidWebGame...
互联网在日常工作和生活中扮演日益重要的角色,互联网将如何重塑社会?本书通过汇集有关互联网文化、经济、政治角色等问题的研究
《深入理解JavaScript特性》内容简介:本书旨在让读者轻松学习JavaScript的新进展,包括ES6及后续更新。书中提供了大量实用示例,以
Thisuniquebookcoversmanyaspectsofwebhandlingformanufacturing,converting,andprint...
本书主要介绍了基于CPLD/FPGA的数字通信系统的设计原理与建模方法。从通信系统的组成、EDA概述及建模的概念开始(第1~2章),围