培訓目標:
了解多核編程常見問題、鎖競爭、加速比、負載均衡
- 了解介紹多核編程的基礎知識:多線程退出算法、讀寫鎖、旋轉鎖、原子操作,
- 了解基于OpenMP標準的并行程序設計基礎等;
- 理解多核編程的基礎的數(shù)據(jù)結構與算法:數(shù)組、鏈表、哈希表、二叉樹、AVL樹、復合二叉樹
- 理解多線程并行遍歷的基本方法。
- 理解并行編程模式:分治模式、流水線模式、任務圖分解與調(diào)度模式、動態(tài)任務調(diào)度模式等,
- 了解并行搜索、并行排序、 并行數(shù)值計算包括并行矩陣乘法、并行前綴和計算的原理和應用。
- 如何解決多核系統(tǒng)中的計算隨CPU核數(shù)的擴展性,
- 掌握分布式計算設計模式如線程分組競爭模式、條件同步模式、批量私有化處理模式、數(shù)據(jù)本地化模式等。
- 了解適應多核的內(nèi)存管理方案。
- 了解并行計算的任務分解與調(diào)度原理和實現(xiàn)方法
培訓對象:軟件開發(fā)工程師
學員基礎:具有多核編程的基本概念和初步經(jīng)驗
培訓內(nèi)容:
多核計算概述
|
- 多核編程會遇到那些問題
- 多核編程與單核多線程編程的區(qū)別
- 多核編程與多機分布式編程的區(qū)別
- 加速比系數(shù)
- 鎖競爭問題及對加速比的影響
- 負載平衡問題對加速比的影響
|
多線程編程基礎 |
- 多線程編程基本概念
- 各種鎖性能比較
- 讀寫鎖算法
- 多線程退出算法
? |
OpenMP程序設計 |
- OpenMP基本概念
- OpenMP編程模型
- 線程創(chuàng)建與工作分攤
- 數(shù)據(jù)處理
- 任務調(diào)度
- 線程間的同步
- OpenMP庫函數(shù)詳解
- OpenMP環(huán)境變量
- OpenMP內(nèi)部控制變量及相關流程
|
基礎數(shù)據(jù)結構與算法 |
- 數(shù)組
- 棧
- 鏈表
- 哈希表
- 普通樹與二叉樹
- AVL搜索樹
- 復合二叉樹
?
|
并行程序設計模式 |
- 模式數(shù)據(jù)分解模式
- 分治模式
- 流水線模式
- 任務并行模式
- 任務調(diào)度模式
|
并行搜索 |
- 并行順序搜索
- 串行Dijkstra最短路徑搜索
- 并行最短路徑算法
|
并行排序 |
- 冒泡排序
- 快速排序
- 并行歸并排序
- 基數(shù)排序
|
并行數(shù)值計算 |
- 多核并行數(shù)值計算面臨的問題
- 求和及前綴求和
- 矩陣相加
- 矩陣相乘
- 矩陣向量相乘
- 并行隨機數(shù)生成
?
|
共享資源分布式計算 |
- 共享資源計算的負載均衡問題
- 共享資源計算的算法設計思路與方法
- 分布式計算設計模式
- 線程分組競爭模式
- 線程隨機競爭模式
- 數(shù)據(jù)本地化模式
- 分布式數(shù)據(jù)結構設計
- 分布式隊列
- 分布式查找
|
分布式內(nèi)存管理 |
- 多核內(nèi)存管理的基本思想
- 等尺寸內(nèi)存管理
- Freelist編碼實現(xiàn)
- Intel 開源項目TBB中的內(nèi)存管理
- 搶奪式內(nèi)存管理算法
- 偽共享問題的深入分析
|
任務分解與調(diào)度 |
- 任務分解與調(diào)度的問題
- 任務間負載均衡的影響因素
- 任務圖調(diào)度模型
- 任務組調(diào)度算法
- 任務圖調(diào)度算法
- 手工任務分解的原則和方法
- 算法流程圖
- 數(shù)據(jù)結構與接口設計
- 代碼實現(xiàn)
- 動態(tài)任務分解與調(diào)度
- 非嵌套型動態(tài)任務調(diào)度
- 嵌套型動態(tài)任務調(diào)度
- 網(wǎng)絡服務器軟件中的任務調(diào)度
|
Lock-Free編程基礎 |
- 問題的引入和思考
- Lock-Free編程的基本原理
- Lock-Free的隊列
- Lock-Free程序的問題分析
- 代碼實現(xiàn)與驗證
|