数据科学中的并行计算:以R,C++和CUDA为例
作者: 著; 译
出版:西安交通大学出版社 2017.12
丛书:R语言应用系列
页数:313
定价:72.00 元
ISBN-13:9787560599588
ISBN-10:7560599583
去豆瓣看看 译者序
前言
作者简介
第1章 R语言中的并行处理入门
1.1 反复出现的主题:良好并行所具有的标准
1.2 关于机器
1.3 反复出现的主题:不要把鸡蛋放在一个篮子里
1.4 扩展示例:相互网页外链
第2章 “我的程序为什么这么慢?”:速度的障碍
2.1 速度的障碍
2.2 性能和硬件结构
2.3 内存的基础知识
2.4 网络基础
2.5 延迟和带宽
2.6 线程调度
2.7 多少个进程/线程?
2.8 示例:相互外链问题
2.9 “大O”标记法
2.10 数据序列化
2.11 “易并行”的应用
第3章 并行循环调度的准则
3.1 循环调度的通用记法
3.2 snow中的分块
3.3 关于代码复杂度
3.4 示例:所有可能回归
3.5 partools包
3.6 示例:所有可能回归,改进版本
3.7 引入另一个工具:multicore
3.8 块大小的问题
3.9 示例:并行距离计算
3.10 foreach包
3.11 跨度
3.12 另一种调度方案:随机任务置换
3.13 调试snow和multicore的代码
第4章 共享内存范式:基于R的简单介绍
4.1 是什么被共享了?
4.2 共享内存代码的简洁
4.3 共享内存编程的高级介绍:Rdsm包
4.4 示例:矩阵乘法
4.5 共享内存能够带来性能优势
4.6 锁和屏障
4.7 示例:时间序列中的最大脉冲
4.8 示例:变换邻接矩阵
4.9 示例:k-means聚类
第5章 共享内存范式:C语言层面
5.1 OpenMP
5.2 示例:找到时间序列中的最大脉冲
5.3 OpenMP循环调度选项
5.4 示例:邻接矩阵的变换
5.5 示例:邻接矩阵,R可调用的代码
5.6 C加速
5.7 运行时间与开发时间
5.8 高速缓存/虚拟内存的深入问题
5.9 OpenMP中的归并操作
5.10 调试
5.11 Intel Thread Brulding Blocks(TBB)
5.12 无锁同步
第6章 共享内存范式:GPU
6.1 概述
6.2 关于代码复杂性的再讨论
6.3 章节目标
6.4 英伟达GPU和CUDA简介
6.5 示例:相互反向链接问题
6.6 GPU上的同步问题
6.7 R和GPU
6.8 英特尔XeonPhi芯片
第7章 Thrust与Rth
7.1 不要把鸡蛋放在一个篮子里
7.2 Thrust简介
7.3 Rth
7.4 略过C++相关内容
7.5 示例:计算分位数
7.6 Rth简介
第8章 消息传递范式
8.1 消息传递概述
8.2 集群模型
8.3 性能问题
8.4 Rmpi
8.5 示例:计算素数的流水线法
8.6 内存分配问题
8.7 消息传递的性能细节
第9章 MapReduce计算
9.1 ApacheHadoop
9.2 其他MapReduce系统
9.3 MapReduce系统的R接口
9.4 另一个选择:“Snowdoop”
第10章 并行排序和归并
10.1 难以实现的最优目标
10.2 排序算法
10.3 示例:R中的桶排序
10.4 示例:使用OpenMP的快排
10.5 Rth中的排序
10.6 计时比较
10.7 分布式数据上的排序
第11章 并行前缀扫描
11.1 一般公式
11.2 应用
11.3 一般策略
11.4 并行前缀扫描的实现
11.5 OpenMP实现的并行cumsum()
11.6 示例:移动平均
第12章 并行矩阵运算
12.1 平铺矩阵
12.2 示例:snowdoop方法
12.3 并行矩阵相乘
12.4 BLAS函数库
12.5 示例:OpenBLAS的性能
12.6 示例:图的连通性
12.7 线性系统求解
12.8 稀疏矩阵
第13章 原生统计方法:子集方法
13.1 分块均值
13.2 Bag of Little Bootstraps方法
13.3 变量子集
附录A 回顾矩阵代数
A.1 术语和符号
A.2 矩阵转置
A.3 线性独立
A.4 行列式
A.5 矩阵求逆
A.6 特征值和特征向量
A.7 R中的矩阵代数
附录B R语言快速入门
B.1 对照
B.2 启动R
B.3 编程示例
B.4 编程示例二
B.5 编程示例三
B.6 R列表类型
B,7R中的调试
附录C 给R程序员的C简介
C.1 示例程序
C.2 分析
C.3 C++
索引
汪磊,中科院微系统所通信专业博士。曾活跃在Julia等多个开源项目。现就职于滴滴出行,负责订单派单策略方向。
寇强,美国印第安纳大学信息学博士在读,Rcpp核心成员。
《数据科学中的并行计算:以R,C++和CUDA为例》是一本并行计算领域中,注意力完全集中在并行数据结构、算法、软件工具及数据科学中具体应用的书。
《数据科学中的并行计算:以R,C++和CUDA为例》中的例子不仅有经典的“n个样本,p个变量”的矩阵形式,还有时间序列、网络图模型,以及各种其他的在数据科学中常见的结构。
《数据科学中的并行计算:以R,C++和CUDA为例》同时也讨论7适用于多种硬件、多种编程语言的的软件包。
《数据科学中的并行计算:以R,C++和CUDA为例》特点
·关注数据科学中的应用,包括统计学、数据挖掘和机器学习。
·讨论了数据科学中的常见数据结构,如网络图模型。
·通篇强调7普遍的原理,如避免降低并行程序速度的因素。
·覆盖了主流的计算平台:多核、集群以及图像处理单元(GPU)。
·解释了Thrust包如何降低多核机器和GPU编程的难度,并使得同一份代码能够在不同的平台上工作。
·在作者网站上提供了样例代码。