译者序 1
前言 3
作者简介 7
第1章R语言中的并行处理入门 1
1.1反复出现的主题:良好并行所具有的标准 1
1.2关于机器 2
1.3反复出现的主题:不要把鸡蛋放在一个篮子里 3
1.4扩展示例:相互网页外链 3
第2章“我的程序为什么这么慢?”:速度的障碍 15
2.1速度的障碍 15
2.2性能和硬件结构 16
2.3内存的基础知识 17
2.4网络基础 20
2.5延迟和带宽 21
2.6线程调度 26
2.7多少个进程/线程? 27
2.8示例:相互外链问题 27
2.9“大O”标记法 28
2.10数据序列化 29
2.11“易并行”的应用 29
第3章 并行循环调度的准则 31
3.1循环调度的通用记法 32
3.2 snow中的分块 33
3.3关于代码复杂度 36
3.4示例:所有可能回归 36
3.5 partools包 48
3.6示例:所有可能回归,改进版本 48
3.7引入另一个工具:multicore 54
3.8块大小的问题 61
3.9示例:并行距离计算 62
3.10 foreach包 67
3.11跨度 71
3.12另一种调度方案:随机任务置换 71
3.13调试snow和multicore的代码 74
第4章 共享内存范式:基于R的简单介绍 76
4.1是什么被共享了? 77
4.2共享内存代码的简洁 80
4.3共享内存编程的高级介绍:Rdsm包 80
4.4示例:矩阵乘法 82
4.5共享内存能够带来性能优势 88
4.6锁和屏障 90
4.7示例:时间序列中的最大脉冲 93
4.8示例:变换邻接矩阵 95
4.9示例:k-means聚类 102
第5章 共享内存范式:C语言层面 112
5.1 OpenMP 112
5.2示例:找到时间序列中的最大脉冲 113
5.3 OpenMP循环调度选项 121
5.4示例:邻接矩阵的变换 124
5.5示例:邻接矩阵,R可调用的代码 130
5.6 C加速 142
5.7运行时间与开发时间 143
5.8高速缓存/虚拟内存的深人问题 143
5.9 OpenMP中的归并操作 149
5.10调试 152
5.11 Intel Thread Building Blocks(TBB) 154
5.12无锁同步 155
第6章 共享内存范式:GPU 157
6.1概述 157
6.2关于代码复杂性的再讨论 158
6.3章节目标 158
6.4英伟达GPU和CUDA简介 159
6.5示例:相互反向链接问题 169
6.6 GPU上的同步问题 172
6.7 R和 GPU 174
6.8英特尔Xeon Phi芯片 175
第7章Thrust与Rth 176
7.1不要把鸡蛋放在一个篮子里 176
7.2 Thrust简介 177
7.3 Rth 177
7.4略过C++相关内容 177
7.5示例:计算分位数 178
7.6 Rth简介 182
第8章 消息传递范式 186
8.1消息传递概述 186
8.2集群模型 187
8.3性能问题 187
8.4 Rmpi 188
8.5示例:计算素数的流水线法 190
8.6内存分配问题 200
8.7消息传递的性能细节 201
第9章MapReduce计算 204
9.1 Apache Hadoop 204
9.2其他MapReduce系统 209
9.3 MapReduce系统的R接口 210
9.4另一个选择:“Snowdoop” 210
第10章 并行排序和归并 214
10.1难以实现的最优目标 214
10.2排序算法 214
10.3示例:R中的桶排序 218
10.4示例:使用OpenMP的快排 219
10.5 Rth中的排序 222
10.6计时比较 224
10.7分布式数据上的排序 225
第11章并行前缀扫描 227
11.1一般公式 227
11.2应用 228
11.3一般策略 229
11.4并行前缀扫描的实现 232
11.5 OpenMP实现的并行cumsum () 232
11.6示例:移动平均 236
第12章并行矩阵运算 244
12.1平铺矩阵 244
12.2示例:snowdoop方法 246
12.3并行矩阵相乘 247
12.4 BLAS函数库 252
12.5示例:OpenBLAS的性能 253
12.6示例:图的连通性 256
12.7线性系统求解 259
12.8稀疏矩阵 263
第13章原生统计方法:子集方法 266
13.1分块均值 266
13.2 Bag of Little Bootstraps方法 273
13.3变量子集 274
附录A回顾矩阵代数 275
A.1术语和符号 275
A.2矩阵转置 277
A.3线性独立 277
A.4行列式 277
A.5矩阵求逆 278
A.6特征值和特征向量 279
A.7 R中的矩阵代数 279
附录B R语言快速入门 282
B.1 对照 282
B.2启动R 283
B.3编程示例一 283
B.4编程示例二 287
B.5编程示例三 290
B.6 R列表类型 291
B.7 R中的调试 295
附录C给R程序员的C简介 296
C.1示例程序 296
C.2分析 297
C.3 C++ 298
索引 301