本課程將介紹平行計算的基礎觀念和電腦系統架構,並教授針對不同平行計算環境所設計的程式語言,包括多核心系統使用的 Pthread、OpenMP, 叢集計算使用的MPI, GPU使用的CUDA, 以及分散式系統使用的MapReduce計算框架。修課同學必須使用 這些平行計算的語言和工具完成5個程式作業,並且以程式的執行效能結果作為學習的評量標準。
課程說明
Course Description
本課程將介紹平行計算的基礎觀念和電腦系統架構,並教授針對不同平行計算環境所設計的程式語言,包括多核心系統使用的 Pthread、OpenMP, 叢集計算使用的MPI, GPU使用的CUDA, 以及分散式系統使用的MapReduce計算框架。修課同學必須使用 這些平行計算的語言和工具完成5個程式作業,並且以程式的執行效能結果作為學習的評量標準。
Course Description
本課程將介紹平行計算的基礎觀念和電腦系統架構,並教授針對不同平行計算環境所設計的程式語言,包括多核心系統使用的 Pthread、OpenMP, 叢集計算使用的MPI, GPU使用的CUDA, 以及分散式系統使用的MapReduce計算框架。修課同學必須使用 這些平行計算的語言和工具完成5個程式作業,並且以程式的執行效能結果作為學習的評量標準。
指定用書
Textbooks
參考書籍
References
♠ | Documentation |
(PVM, MPI, Cilk, Pthread, TreadMark, SAM) | |
♠ | Designing and Building Parallel Programs, Ian Foster, Addison Wesley, 1995. |
教學進度
Syllabus
Part I | Introduction |
- Introduction to Parallel Computers - Introduction to Parallel Computing | |
Part II | Parallel Programming |
- Message-Passing Programming (MPI) - Shared Memory Programming (Pthread and OpenMP) | |
Part III | Parallel Computing Techniques |
- Embarrassingly Parallel Computations - Partitioning and Divide-and-Conquer Strategies - Pipelined Computations - Synchronous Computations - Load Balancing and Termination Detection | |
Part IV | GPU Programming |
- Heterogeneous computing - CUDA programming model - GPU Architecture & Multi-GPU - Advanced CUDA Programming & Optimization | |
Part V | Distributed Programming |
- MapReduce - Hadoop Programming |