内容简介
《多核计算与程序设计》主要介绍适应于多核(或多处理器)计算机系统的算法和程序,共分为五个部分进行讲解。第1部分介绍多核编程的基础知识,包括多核编程常见问题、锁竞争、加速比、负载均衡等基本概念,多线程退出算法、读写锁、旋转锁、原子操作等多线程编程基础知识,基于OpenMP标准的并行程序设计基础等;
第2部分介绍基础的数据结构与算法,包括数组、链表、哈希表、二叉树、AVL树、复合二叉树等基本数据结构,在链表那章中还讲解了多线程并行遍历的基本方法。
第3部分介绍多核并行计算方面的基础知识,并行编程包括常用的编程模式如分治模式、流水线模式、任务图分解与调度模式、动态任务调度模式等,并行搜索包括顺序搜索及终止检测算法,并行最短路径搜索等,并行排序包括并行快速排序、并行归并排序、并行基数排序等,并行数值计算包括并行矩阵乘法、并行前缀和计算等方面的内容。本部分介绍的各种并行算法和程序中,重点介绍如何解决多核系统中的计算随CPU核数的扩展性,CPU Cache伪共享方面的问题。
第4部分介绍多核共享资源计算方面的内容,也是《多核计算与程序设计》中最重要的内容,讲解了分布式计算设计模式如线程分组竞争模式、条件同步模式、批量私有化处理模式、数据本地化模式等。这部分中讲解了《多核计算与程序设计》中几个最重要的程序:分布式队列中实现了自动让每个线程带有一个本地队列、分布式查找中介绍了分段锁的哈希表、动态负载平衡的分布式查找等,分布式内存管理则介绍了适应多核的内存管理方案,尤其是基于抢夺式的分布式内存管理算法,在分配和释放共享内存时也几乎不需要使用锁,性能优异。
第5部分介绍任务分解与调度方面的知识,这也是《多核计算与程序设计》中最重要的内容,包括任务图分解与调度的实现方法,动态任务分解与调度的实现方法等。其中还介绍了使用动态嵌套任务调度进行并行计算的方法,给出了用动态嵌套任务调度实现ParallelForo、并行快速排序、并行归并的实例。
最后一章中还介绍了Lock-Free编程(使用CAS原子操作进行编程)的基础知识,如ABA问题,内存删除问题等,并给出了一个Lock-Free的队列的实现实例。
周伟明者,熙熙攘攘中一过客也。
幼时学业平平,懵懂不通世事,贪玩而不求上进者是也。及中学后,心稍静,渐感数理之趣,学业有进也。性直,受前辈之影响,好公平、正义。喜青莲居士之豪爽,亦兼怀少陵野老之忧,致好友者众,亦未尝为此开罪于人也。
及学业竟,尝供职于某大型国企,彼时仍不知世事,终日游戏人生。同届之友,茶余饭后,常聚某室,或高谈阔论,或痛批时事;又或同游某山,同玩某游戏,同学某技。人生之快事,不亦乐乎!
俗云:“天下无不散之筵席”。游戏人生,非长久之计。寻思技已入门,乃欲进熙攘之门,建功立业去也。遂入深圳,在深十余年间,历经私企,外企,国企,后辗转于某大型私企。功业之梦,终未达成,熙攘之门,也未挤进,何也,需交入场券也。
有南国智者,遇于南山之巅,语吾曰:众皆有入场券,尔何独无?何不习众人,攫其一,混入熙攘之门,以达尔愿。
答曰:入场券非免费可取,需...
豆瓣评论