| 作者 |
| (法)弗兰克·尼尔森(Frank Nielsen) |
| 丛书名 |
| 数据科学与工程技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111602149 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书使用MPI标准介绍了数据科学中的高性能计算,帮助读者了解分布式存储模型中的并行编程的知识。全书分为两部分,第一部分(第1~6章)基于消息传递接口介绍高性能计算,内容包括:阻塞与非阻塞的点对点通信、死锁、全局通信函数(广播、散播等)、协同计算(归约)的基本概念;互联网络的拓扑结构(环、环面和超立方体)以及相应的全局通信程序;基于分布式内存的并行排序及其实现,涵盖相关并行线性代数知识;MapReduce模型。第二部分(第7~11章)介绍计算机集群中的高性能数据分析,内容包括:数据聚类技术(平面划分聚类、层次聚类);基于k-NN的有监督分类;核心集以及相关降维技术;图算法(最稠密子图、图同构检测)。每章章末附有各种难度的练习和参考文献,可供读者进行自测和深入学习。 本书适合作为“高性能计算”相关课程的本科生教材。 |
| 目录 |
| 译者序 前言 致谢 第一部分基于消息传递接口的高性能计算 第1章走进高性能计算 11什么是高性能计算 12为什么我们需要HPC 13大数据:四个特性(数据量、多样性、生成速度、价值) 14并行编程范式:MPI和MapReduce 15粒度:细粒度并行与粗粒度并行 16超级计算架构:内存和网络 17加速比 171扩展性和等效率分析 172Amdahl定律:描述数据规模固定时渐近加速比的变化趋势 173Gustafson定律:可扩展的加速比,随着资源的增加不断扩大数据量 174在串行计算机上模拟并行机 175大数据和并行输入/输出 18关于分布式系统的八个常见误区 19注释和参考 110总结 111练习 参考文献 第2章MPI简介:消息传递接口 21基于MPI的并行程序设计:基于消息通信 22并行编程模型、线程和进程 23进程之间的全局通信 231四个基本的MPI原语:广播、收集、归约和全交换 232阻塞与非阻塞和同步与异步通信 233阻塞通信产生的死锁 234并发性:局部计算可以与通信重叠执行 235单向与双向通信 236MPI中的全局计算:归约和并行前缀(扫描) 237采用通信器定义通信组 24同步屏障:进程的交汇点 241MPI中的一个同步示例:测量运行时间 242整体同步并行计算模型 25开始使用MPI:使用OpenMPI 251用MPI C++编写“Hello World”程序 252用C绑定进行MPI编程 253通过C++ Boost使用MPI 26通过OpenMP使用MPI 27MPI中的主要原语 271广播、散播、收集、归约和全归约的MPI语法 272其余混杂的MPI原语 28环形拓扑上利用MPI进行的通信 29MPI程序示例及其加速比分析 291MPI中的矩阵向量积 292MPI归约操作示例:计算数组的阶乘和最小值 293MonteCarlo随机积分算法估算π 294MonteCarlo随机积分算法估算分子体积 210注释和参考 211总结 212练习 参考文献 第3章互联网络的拓扑结构 31两个重要概念:静态与动态网络,以及逻辑与物理网络 32互联网络:图建模 33一些描述拓扑结构的属性 331度和直径 332连通性和对分 333一个好的网络拓扑结构的标准 34常见的拓扑结构:简单的静态网络 341完全图:团 342星形图 343环和带弦环 344网(网格)与环面簇(环面的集合) 345三维立方体与循环连接立方体 346树与胖树 35超立方体拓扑结构以及使用格雷码进行节点标识 351超立方体的递归构造 352使用格雷码对超立方体节点编号 353使用C++生成格雷码 354格雷码和二进制码的相互转换 355图的笛卡儿乘积 36一些拓扑结构上的通信算法 361有向环上的通信原语 362超立方体上的广播:树状通信 37将(逻辑)拓扑结构嵌入到其他(物理)拓扑结构中 38复杂规则拓扑结构 39芯片上的互联网络 310注释和参考 311总结 参考文献 第4章并行排序 41串行排序快速回顾 411主要的串行排序算法 412排序的复杂性:下界 42通过合并列表实现并行排序 43利用秩实现并行排序 44并行快速排序 45超快速排序 46正则采样并行排序 47基于网格的排序:ShearSort 48使用比较网络排序:奇偶排序 49使用比较网络合并有序列表 410双调归并排序 411注释和参考 412总结 413练习 参考文献 第5章并行线性代数 51分布式线性代数 511数据科学中的线性代数 512经典线性代数 513矩阵向量乘法:y=Ax 514并行数据模式 52有向环拓扑上的矩阵向量乘积 53网格上的矩阵乘法:外积算法 54二维环面拓扑上的矩阵乘积 541Cannon算法 542Fox算法:广播相乘循环移位矩阵乘积 543Snyder算法:在对角线上进行本地乘积累加 544Cannon、Fox和Snyder算法的比较 55注释和参考 56总结 57练习 参考文献 第6章MapReduce范式 61快速处理大数据的挑战 62MapReduce的基本原理 621map和reduce过程 622历史视角:函数式编程语言中的map和reduce 63数据类型和MapReduce机制 64MapReduce在C ++中的完整示例 65启动MapReduce作业和MapReduce架构概述 66基于MRMPI库在MPI中使用MapReduce 67注释和参考 68总结 参考文献 第二部分面向数据科学的高性能计算 第7章基于k均值的划分聚类 71探索性数据分析与聚类 711硬聚类:划分数据集 712成本函数和模型聚类 72k均值目标函数 721重写k均值成本函数以对聚类效果进行双重解释:聚类簇内数据或分离簇间数据 722k均值优化问题的复杂性和可计算性 73Lloyd批量k均值局部启发式方法 74基于全局启发式的k均值初始化方法 741基于随机种子的初始化方法 742全局k均值:最佳贪心初始化 743kmeans ++:一种简单的概率保证的初始化方法 75k均值向量量化中的应用 751向量量化 752Lloyd的局部最小值和稳定Voronoi划分 76k均值的物理解释:惯性分解 77k均值中k的选择:模型选择 771基于肘部法则的模型选择 772模型选择:用k解释方差减少 78集群上的并行k均值聚类 79评估聚类划分 791兰德指数 792归一化互信息 710注释和参考 711总结 712练习 参考文献 第8章层次聚类 81凝聚式与分裂式层次聚类及其树状图表示 82定义一个好的连接距离的几种策略 821一个用于凝聚式层次聚类的通用算法 822为元素选择合适的基本距离函数 83Ward合并准则和质心 84从树状图中获取平面划分 85超度量距离和进化树 86注释和参考 87总结 88练习 参考文献 第9章有监督学习: kNN规则分类的理论和实践 91有监督学习 92最近邻分类:NN规则 921最近邻查询中欧几里得距离计算的优化方法 922最近邻(NN)规则和Voronoi图 923利用kNN规则通过表决来增强NN规则 93分类器性能评估 931误判错误率 932混淆矩阵与真/假及阳性/阴性 94准确率、召回率和F值 95统计机器学习和贝叶斯最小误差界 951非参数概率密度估计 952误差概率和贝叶斯误差 953kNN规则的误差概率 96在计算机集群上实现最近邻查询 97注释和参考 98总结 99练习 参考文献 第10章基于核心集的高维快速近似优化和快速降维 101大规模数据集的近似优化 1011高维度的必要性示例 1012高维度上的一些距离现象 1013核心集:从大数据集到小数据集 102核心集的定义 103最小闭包球的核心集 104一个用来近似最小闭包球的简单迭代启发式方法 1041收敛性证明 1042小闭包球和用于SVM的边缘线性分离器 105k均值的核心集 106基于随机投影矩阵的快速降维 1061维数灾难 1062高维度任务的两个示例 1063线性降维 1064JohnsonLindenstrauss定理 1065随机投影矩阵 107注释和参考 108总结 109练习 参考文献 第11章图并行算法 111在大图中寻找(最)稠密子图 1111问题描述 1112最稠密子图的复杂度和一个简单的贪心启发式算法 1113最稠密子图的并行启发式算法 112判断(子)图同构 1121枚举算法的一般原则 1122Ullman算法:检测子图同构性 1123枚举算法并行化 113注释和参考 114总结 115练习 参考文献 附录A 笔试 附录B SLURM:集群上的资源管理器和任务调度器 |