課程名稱：CUDA 程式設計教學 V2.0
課程時數：總共 12 節, 每節 2 hr
協辦單位：李同益　教授  成功大學資訊工程系
   tonylee@mail.ncku.edu.tw   06-2757575　分機 62531

上課時間：每週一下午 14:10~16:30  (2009/09/21 ~ 2009/12/21) 期中考停課一週
上課地點：成功大學　資訊工程學系 4201 教室
授課講師：李宗育  (Sr. System Engineer, APAC FAE & TASA PSG Sales, NVIDIA)
   joylee@nvidia.com   0932-953-725

課程大綱：

(1) 分組 & Project 分配
(2) Wiki 建置 & 課程說明
(3) 超級電腦及平行計算回顧 & GPGPU 發展
(4) CUDA Driver、ToolKit、SDK 介紹與安裝
(5) CUDA API 架構
(6) 範例：Device Query
(7) 範例：記憶體配置 & 搬移

(8) 快速上手
(9) 執行緒群組 & SIMT架構
(10) 範例：執行緒 ID 
(11) 範例：向量加法

(12) 記憶體架構 & 執行緒同步化
(13) 範例：tree reduction 與向量內積
(14) 範例：矩陣 transpose
(15) 範例：矩陣乘法

(16) 混編譯器 (Cross Compiler)
(17) 函式庫使用與建構
(18) 物件導向
(19) 範例：cublas 示範
(20) 範例：向量 template 物件

(21) 常數快取、材質快取
(22) Atomic 函數
(23) 範例：有限差分法 (Finite difference)
(24) 範例：鬆弛法 (Success over relaxation)
(25) 範例：穩態溫度分佈 (OpenGL 範例)

(26) GPU 硬體架構 (from SIMD to SIMT)
(27) 計算版本
(28) 編譯器選項
(29) 範例：檢視暫存器及記憶體使用量
(30) 範例：限制暫存器用量
(31) 範例：檢視 PTX code
(32) 範例：使用雙精確倍數

(33) 大量平行演算法專題
(34) 專題：疊代法解反矩陣 (conjugate gradient)
(35) 專題：混合精度演算法 (mixed precision method)
(36) 專題：平行亂數產生器 (parallel random number generator)
(37) 專題：蒙地卡羅模擬 (Monte Carlo simulation)
(38) 專題：特徵值問題 (Eigen value problem)
(39) 專題：最佳化 scan 
(40) 專題：排序演算法 (sorting)
(41) 專題：資料壓縮 (LZ77, LZJ, Range Coder,…)

(42) 多 GPU 環境
(43) OpenMP, pthread, MPI
(44) 範例：多 GPU 矩陣乘法計算
(45) 範例：多 GPU 求解溫度分佈

(46) PCI-E 傳輸：不分頁記憶體
(47) 非同步執行：串流與事件
(48) 範例：PCIE 速率測試
(49) 範例：非同步矩陣乘法

(50) 計時器、模擬器、Profiler
(51) 範例：使用 GPU 計時器
(52) 範例：使用模擬器除錯
(53) 範例：使用 Profiler

(54) 分組進度報告