內容簡介
《數據科學中的並行計算:以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 電子書
數據科學中的並行計算:以R,C++和CUDA為例 [Parallel Computing for Data Science:with Examples in R,C++ and CUDA] mobi epub pdf txt 電子書 格式下載 2024