本課程將介紹平行計算的基礎觀念和電腦系統架構,並教授針對不同平行計算環境所設計的程式語言,包括多核心系統使用的 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. |
| 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 |