課程名稱 |
平行與分散式程式設計 Parallel and Distributed Programming |
開課學期 |
106-1 |
授課對象 |
電機資訊學院 資訊網路與多媒體研究所 |
授課教師 |
洪士灝 |
課號 |
CSIE7210 |
課程識別碼 |
922 U3970 |
班次 |
|
學分 |
3.0 |
全/半年 |
半年 |
必/選修 |
選修 |
上課時間 |
星期四2,3,4(9:10~12:10) |
上課地點 |
資107 |
備註 |
總人數上限:50人 |
Ceiba 課程網頁 |
http://ceiba.ntu.edu.tw/1061PDP |
課程簡介影片 |
|
核心能力關聯 |
核心能力與課程規劃關聯圖 |
課程大綱
|
為確保您我的權利,請尊重智慧財產權及不得非法影印
|
課程概述 |
『平行與分散式程式設計』教授發揮多處理機系統與雲端運算平台所必備的進階知識與技能,除了講解基本理論之外,本課程採用「做中學」(Project/Problem-based Learning)的教學思維,來探討常見的平行與分散式程式設計,以及解決實務問題。
在平行計算的領域中,近年異質計算(GPU/FPGA)以及加速器技術興起、發展迅速,用於高效能運算、大數據分析、人工智慧等應用。本次將以人工智慧(Tensorflow)與影像辨認(OpenCV)為案例,探討如何運用平行/分散/異質計算來打造高效率系統。
本課程為大學部高年級與研究所選修課程,除了課程講授與實驗之外,也要求學生自行研讀補充瘀教材,以及尋找適合期末專題的研究題材。
課程中將探討以下的案例:
1. 以常見的機器學習、影像辨認開源碼做為案例,例如Tensorflow、OpenCV
2. 以CPU平行處理加速機器學習之案例研究
3. 以GPU與CUDA加速機器學習之案例研究
4. 以GPU與OpenCL加速影像辨認之案例研究
5. 以FPGA與TPU加速機器學習之案例研究
6. 以計算叢集加速機器學習模型之訓練
7. 期末專題: 挑選一智慧聯網應用,嘗試加速該應用
助教資訊:TBA |
課程目標 |
本課程的目標在於讓修課同學:
- 學習平行化程式及演算法
- 使用平行程式語言開發程式
- 在雲端計算平台實作平行化程式,以瞭解雲端計算相關之效能要素
- 培養尋找研究題材與進行研究之專業能力 |
課程要求 |
本課程為大學部高年級與研究所選修課程,除了課程講授之外,也要求學生自行研讀教材,進行實驗,以及設計期末專題。學生需具備下列課程基礎:
- 計算機結構
- 程式設計
- 作業系統 |
預期每週課後學習時數 |
|
Office Hours |
每週四 15:00~17:00 每週一 15:00~17:00 |
指定閱讀 |
|
參考書目 |
1. Heterogeneous Computing with OpenCL, by Benedict R. Gaster, Lee Howes, David
R. Kaeli, Perhaad Mistry & Dana Schaa, 2011
2. CUDA by Example: An Introduction to General-Purpose GPU Programming, by Jason
Sanders & Edward Kandrot, 2010
3. Data-Intensive Text Processing with MapReduce, by Jimmy Lin & Chris Dyer, 2010
4. Advanced Computer Architecture and Parallel Processing, by Hesham El-Rewini
and Mostafa Abo-El-Barr, 2005 |
評量方式 (僅供參考) |
No. |
項目 |
百分比 |
說明 |
1. |
Labs/Exercises |
50% |
實驗與作業 |
2. |
Final Project |
40% |
期末專題 |
3. |
Quiz |
10% |
不定時小考 |
|
週次 |
日期 |
單元主題 |
第01週 |
09/14 |
Introduction to Parallel Computing |
第02週 |
09/21 |
Teacher is out of country. Please work on the exercise mentioned in the end of the class. (See slide) |
第03週 |
09/28 |
Basics of Parallel Computing |
第04週 |
10/05 |
Introduction to OpenCV and how to Make it run faster |
第05週 |
10/12 |
Introduction to OpenCL |
第06週 |
10/19 |
OpenCL and Heterogeneous Computing |
第07週 |
10/26 |
Parallel Architectures and Shared Memory Programming (OpenMP)
|
第08週 |
11/02 |
GPU Architecture, CUDA Programming, Tensorflow/CuDNN |
第09週 |
11/09 |
Distributed Computing and MPI |
第10週 |
11/16 |
MPI |
第11週 |
11/23 |
Overview of Distributed Computing: Internet of Things, Fog Computing and Edge Computing |
第12週 |
11/30 |
Cloud and Big Data Analytics |
第13週 |
12/07 |
Final Project Proposal |
第14週 |
12/14 |
Neural Network Engines: TPU,OpenCL for FPGA |
第15週 |
12/21 |
Performance Issues in Distributed Computing (Data Storage, Data Flow, RDMA) |
第16週 |
12/28 |
Final Project Progress Report |
第17週 |
01/04 |
Future of HPC |
第18週 |
01/11 |
Final Project Demo |
|