书籍名称:多核计算与程序设计
页数:657
作者:周伟明著
出版时间:2009
ISBN:9787560950969
出版社:武汉:华中科技大学出版社
简介:多核计算与程序设计内容简介本书主要介绍适应于多核(或多处理器)计算机系统的算法和程序,共分为五个部分进行讲解。第1部分介绍多核编程的基础知识,包括多核编程常见问题、锁竞争、加速比、负载均衡等基本概念,多线程退出算法、读写锁、旋转锁、原子操作等多线程编程基础知识,基于OpenMP标准的并行程序设计基础等;第2部分介绍基础的数据结构与算法,包括数组、链表、哈希表、二叉树、AVL树、复合二叉树等基本数据结构,在链表那章中还讲解了多线程并行遍历的基本方法。第3部分介绍多核并行计算方面的基础知识,并行编程包括常用的编程模式如分治模式、流水线模式、任务图分解与调度模式、动态任务调度模式等,并行搜索包括顺序搜索及终止检测算法,并行最短路径搜索等,并行排序包括并行快速排序、并行归并排序、并行基数排序等,并行数值计算包括并行矩阵乘法、并行前缀和计算等方面的内容。本部分介绍的各种并行算法和程序中,重点介绍如何解决多核系统中的计算随CPU核数的扩展性,CPUCache伪共享方面的问题。第4部分介绍多核共享资源计算方面的内容,也是本书中最重要的内容,讲解了分布式计算设计模式如线程分组竞争模式、条件同步模式、批量私有化处理模式、数据本地化模式等。这部分中讲解了本书中几个最重要的程序:分布式队列中实现了自动让每个线程带有一个本地队列、分布式查找中介绍了分段锁的哈希表、动态负载平衡的分布式查找等,分布式内存管理则介绍了适应多核的内存管理方案,尤其是基于抢夺式的分布式内存管理算法,在分配和释放共享内存时也几乎不需要使用锁,性能优异。第5部分介绍任务分解与调度方面的知识,这也是本书中最重要的内容,包括任务图分解与调度的实现方法,动态任务分解与调度的实现方法等。其中还介绍了使用动态嵌套任务调度进行并行计算的方法,给出了用动态嵌套任务调度实现Parallel_For()、并行快速排序、并行归并的实例。最后一章中还介绍了Lock-Free编程(使用CAS原子操作进行编程)的基础知识,如ABA问题,内存删除问题等,并给出了一个Lock-Free的队列的实现实例。本书的特色内容1、并行遍历的基本方法2、常见并行算法如并行搜索、并行排序、并行数值计算等在多核系统中的实现3、共享资源分布式计算的基本编程模式和方法4、分布式队列,它能自动给每个线程赋予一个本地队列,它是基于偷取的共享队列和队列池来实现的。5、分布式查找,包括分段锁的哈希表,动态负载平衡的多级查找等6、分布式内存管理,它自动给每个线程生成一个本地的内存管理器,并且几乎不需要使用锁进行内存分配和释放(抢夺式内存管理)7、任务图分解与调度及实现方法8、非嵌套任务调度,可用于网络服务器软件等地方进行任务调度9、嵌套任务调度,是另一种更广泛的任务调度方法,可以用它实现各种并行计算。10、各种程序和算法中的伪共享问题的处理11、Lock-Free编程基础知识。
前部分目录
第1部分 基础知识——1
1 多核计算概述——1
2 多线程编程基础——41
3 OpenMP程序设计——75
第2部分 基础数据结构与算法——75
4 数组——125
5 链表——149
6 哈希表——191
7 普通树与二叉树——221
8 AVL搜索树——245
9 复合二叉树——287
第3部分 并行计算——315
10 并行程序设计模式——315
11 并行搜索——323
12 并行排序——345
13 并行数值计算——379
······
······
······