天天看點

《多核與GPU程式設計:工具、方法及實踐》----導讀

《多核與GPU程式設計:工具、方法及實踐》----導讀
《多核與GPU程式設計:工具、方法及實踐》----導讀

目 錄

[第1章 概述

<a href="https://yq.aliyun.com/articles/90100">1.2 并行計算機的分類</a>

[1.3 現代計算機概覽

1.3.1 cell be處理器

1.3.2 nvidia kepler

1.3.3 amd apu

<a href="https://yq.aliyun.com/articles/90118">1.4 性能名額</a>

[1.5 并行程式性能的預測與測量

1.5.1 amdahl定律

[第2章 多核和并行程式設計

<a href="https://yq.aliyun.com/articles/90141">2.2 pcam方法學</a>

[2.3 分解模式

2.3.1 任務并行

2.3.2 分而治之分解

2.3.3 幾何分解

2.3.4 遞歸資料分解

2.3.5 流水線分解

[2.4 程式結構模式

2.4.1 單程式多資料

2.4.2 多程式多資料

2.4.3 主/從

2.4.4 map-reduce

2.4.5 fork/join

<a href="https://yq.aliyun.com/articles/90199/">2.5 比對分解模式和程式結構模式</a>

[第3章 共享記憶體程式設計:線程

[3.2 線程

3.2.1 線程的定義

3.2.2 線程的作用

3.2.3 線程的生成和初始化

<a href="https://yq.aliyun.com/articles/90231">3.3 設計考慮</a>

<a href="https://yq.aliyun.com/articles/90239">3.4 信号量</a>

[3.5 經典問題中的信号量

3.5.1 生産者–消費者

3.5.2 終止處理

3.5.3 理發師問題:引入公平性

[3.6 monitor

3.6.1 設計方法1:monitor内部的關鍵區

[3.7 經典問題中的monitor

3.7.1 重新考慮生産者–消費者問題

[3.8 動态線程管理與靜态線程管理

3.8.1 qt線程池

<a href="https://yq.aliyun.com/articles/90358/">3.9 調試多線程應用</a>

3.10 高層次結構:無須顯式利用線程的多線程程式設計

3.10.1 并發map

3.10.2 map-reduce

3.10.3 并發過濾

3.10.4 filter-reduce

3.10.5 案例研究:多線程存儲

3.10.6 案例研究:多線程圖像比對

第4章 共享記憶體程式設計:openmp

4.1 引言

4.2 第一個openmp程式

4.3 變量作用域

4.3.1 定積分openmp版本v.0:人工劃分

4.3.2 定積分openmp版本 v.1:無競争條件的人工劃分

4.3.3 定積分openmp v.2:基于鎖的隐式劃分

4.3.4 定積分openmp v.3:基于歸約的隐式劃分

4.3.5 變量作用域總結

4.4 循環級并行

4.4.1 資料依賴

4.4.2 嵌套循環

4.4.3 排程

4.5 任務并行

4.5.1 sections指令

4.5.2 task指令

4.6 同步結構

4.7 正确性與優化問題

4.7.1 線程安全

4.7.2 假共享

4.8 案例研究:openmp中的排序算法

4.8.1 自下而上歸并排序算法的openmp實作

4.8.2 自上而下歸并排序算法的openmp實作

4.8.3 性能評估

第5章 分布式記憶體程式設計

5.1 通信程序

5.2 mpi

5.3 核心概念

5.4 你的第一個mpi程式

5.5 程式體系結構

5.5.1 spmd

5.5.2 mpmd

5.6 點對點通信

5.7 可選的點對點通信模式

5.8 非阻塞通信

5.9 點對點通信小結

5.10 錯誤報告與處理

5.11 集合通信簡介

5.11.1 分發

5.11.2 收集

5.11.3 歸約

5.11.4 多對多收集

5.11.5 多對多分發

5.11.6 多對多歸約

5.11.7 全局同步

5.12 通信對象

5.12.1 派生資料類型

5.12.2 打包/解包

5.13 節點管理:通信器群組

5.13.1 建立組

5.13.2 建立内部通信器

5.14 單邊通信

5.14.1 rma通信函數

5.14.2 rma同步函數

5.15 i/o注意事項

5.16 mpi多程序和多線程混合程式設計

5.17 時序和性能測量

5.18 調試和分析mpi程式

5.19 boost.mpi庫

5.19.1 阻塞和非阻塞通信

5.19.2?資料序列化

5.19.3?集合通信

5.20 案例研究:有限擴散聚合模型

5.21 案例研究:暴力加密破解

5.21.1 版本1:“基本型”mpi

5.21.2 版本2:mpi與openmp的結合

5.22 案例研究:主/從式并行模型的mpi實作

5.22.1 簡單主/從式設定

5.22.2 多線程主/從式設定

第6章 gpu程式設計

6.1 gpu程式設計簡介

6.2 cuda程式設計模型:線程、線程塊、線程網格

6.3 cuda執行模型:流多處理器和warp

6.4 cuda程式編譯過程

6.5 建構cuda項目

6.6 記憶體層次結構

6.6.1 本地記憶體/寄存器

6.6.2 共享記憶體

6.6.3 常量記憶體

6.6.4 texture和surface記憶體

6.7 優化技術

6.7.1 線程組織設計

6.7.2 kernel結構

6.7.3 共享記憶體通路

6.7.4 全局記憶體通路

6.7.5 page-locked與zero-copy記憶體

6.7.6 統一記憶體

6.7.7 異步執行和流

6.8 動态并行

6.9 cuda程式的調試

6.10 cuda程式剖析

6.11 cuda和mpi

6.12 案例研究

6.12.1 分形集合計算

6.12.2 塊加密算法

第7章 thrust模闆庫

7.1 引言

7.2 使用thrust的第一步

7.3 thrust資料類型

7.4 thrust算法

7.4.1 變換算法

7.4.2 排序與查詢

7.4.3 歸約

7.4.4 scan /字首和

7.4.5 資料管理與處理

7.5 花式疊代器

7.6 交換裝置後端

7.7 案例研究

7.7.1 蒙特卡洛積分

7.7.2 dna序列比對

第8章 負載均衡

8.1 引言

8.2 動态負載均衡:linda的遺贈

8.3 靜态負載均衡:可分負載理論方法

8.3.1 模組化開銷

8.3.2 通信設定

8.3.3 分析

8.3.4 總結?:簡短的文獻綜述

8.4 dltlib:分割工作負載的庫

8.5 案例研究

8.5.1 mandelbrot集“電影”的混合計算:動态負載均衡案例研究

8.5.2 分布式塊加密:靜态負載均衡案例研究

線上資源

附錄a 編譯qt程式

附錄b 運作mpi程式:準備與配置步驟

附錄c 測量時間

附錄d boost.mpi

附錄e cuda環境搭建

附錄f dltlib

術語表

參考文獻

繼續閱讀