内容简介
《数据科学中的并行计算:以R,C++和CUDA为例》是一本并行计算领域中,注意力完全集中在并行数据结构、算法、软件工具及数据科学中具体应用的书。
《数据科学中的并行计算:以R,C++和CUDA为例》中的例子不仅有经典的“n个样本,p个变量”的矩阵形式,还有时间序列、网络图模型,以及各种其他的在数据科学中常见的结构。
《数据科学中的并行计算:以R,C++和CUDA为例》同时也讨论7适用于多种硬件、多种编程语言的的软件包。
《数据科学中的并行计算:以R,C++和CUDA为例》特点
·关注数据科学中的应用,包括统计学、数据挖掘和机器学习。
·讨论了数据科学中的常见数据结构,如网络图模型。
·通篇强调7普遍的原理,如避免降低并行程序速度的因素。
·覆盖了主流的计算平台:多核、集群以及图像处理单元(GPU)。
·解释了Thrust包如何降低多核机器和GPU编程的难度,并使得同一份代码能够在不同的平台上工作。
·在作者网站上提供了样例代码。
作者简介
汪磊,中科院微系统所通信专业博士。曾活跃在Julia等多个开源项目。现就职于滴滴出行,负责订单派单策略方向。
寇强,美国印第安纳大学信息学博士在读,Rcpp核心成员。
内页插图
精彩书评
★“……一本完整、易读的并行计算入门——它适合很多学科的研究人员和学生使用。这是一本‘必备’的参考书……”
——戴维·E·吉尔斯,维多利亚大学
★“这本书我会既用来当参考书,又当教材。书中的例子生动,内容也使读者直接从概念走向可用于工作的代码。”
——迈克尔·凯恩,耶鲁大学
目录
译者序
前言
作者简介
第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++
索引
前言/序言
感谢你对本书感兴趣。我很享受写书的过程,也希望这本书对你非常有用。为达此目的,这里有几点事情我希望说清楚。本书目标:
我很希望这本书能充分体现它标题的含义——数据科学中的并行计算。和我所知道的其他并行计算的书籍不同,这本书里你不会碰到任何一个求解偏微分方程或其他物理学上的应用。这本书真的是为了数据科学所写——无论你怎样定义数据科学,是统计学、数据挖掘、机器学习、模式识别、数据分析或其他的内容-。
这不仅仅意味着书里的实例包括了从数据科学领域中选取的应用,这也意味着能够反映这一主题的数据结构、算法和其他内容。从经典的“n个观测,p个变量”的矩阵形式,到时间序列,到网络图模型和其他数据科学中常见的结构都会囊括其中。
本书包含了大量实例,以用于强调普遍的原理。因此,在第1章介绍了入门的代码实例后(没有配套的实例,这些普遍的原理也就没有任何意义),我决定在第2章里解释可以影响并行计算速度的一般因素,而不是集中介绍如何写并行代码。这是一个至关重要的章节,在后续的章节中会经常提到它。
数据科学中的并行计算:以R,C++和CUDA为例 [Parallel Computing for Data Science:with Examples in R,C++ and CUDA] 下载 mobi epub pdf txt 电子书 格式
数据科学中的并行计算:以R,C++和CUDA为例 [Parallel Computing for Data Science:with Examples in R,C++ and CUDA] 下载 mobi pdf epub txt 电子书 格式 2024
数据科学中的并行计算:以R,C++和CUDA为例 [Parallel Computing for Data Science:with Examples in R,C++ and CUDA] mobi epub pdf txt 电子书 格式下载 2024