跳到主要內容
:::

NVIDIA CUDA 圖形處理器高速平行運算技術

近十年以來,圖形處理器(GPU: Graphic Processing Unit)的計算能力大幅成長,每隔一段時間其性能就有加倍的成長,目前高性能圖形處理器的計算能力已經可以達到每秒一兆次的浮點運算以上(TFLOPS),遠高於中央處理器 (CPU)的計算能力。為了使圖形處理器的運算能夠快速普及化,繪圖晶片供應商NVIDIA在2007年推出免費的圖形處理器程式開發工具CUDA (Compute Unified Device Architecture),使其客戶可以在通用圖形處理器(GPGPU: General Purpose GPU)上任意開發各類的科學運算。具有高度運算需求之科學領域包括:人工智慧、深度學習、影音3D多媒體、生物醫學、國防科學、石油探勘、財務工程、土木建築、電腦輔助製造(CAM:Computer Aided Manufacturing)、計算機輔助工程(CAE:Computer Aided Engineering)、電腦輔助設計(CAD:Computer Aided Design)、氣體煙霧模擬、火焰模擬、模流水流模擬等。可知半導體製程的快速進步使得圖形處理器的計算能力跟著快速成長,並且隨著圖形處理器程式開發工具CUDA的普及,更加速超高速運算新紀元及人工智慧時代的來臨。本課程的最大目標是引導CUDA初學者能夠在短時間內快速進入CUDA的平行世界。只要是具備有C程式語言的設計基礎者均可參加此課程,第1天的時間快速學會CUDA平行處理程式的設計技巧及平行理念。為了加強學習的效果,本課程的安排特別著重於由淺而深,並提供上機實習,逐步引導學員從理解進而可以最快的速度上手CUDA平行程式的設計。第2天課程的目標在於深入探討CUDA平行程式設計的最佳化策略及守則。如何能夠盡量提昇圖形處理器的運算效能及使用頻寬以便盡可能發揮CUDA程式的平行運算能力,即為第二天課程所要探討的要項。搭配CUDA SDK中數個精選程式範例為本課程之個案研究,可詳細觀摩到CUDA平行程式的進階設計理念,從而可以舉一反三,加速成為平行處理程式的設計高手。

  • 開課單位:財團法人自強工業科學基金會
  • 課程大綱:Day 1:
    1.圖形處理器架構及計算能力簡介
    a. CUDA SDK安裝(Windows 及 Linux 平台)
    b.成功的compile第一個程式
    c.使用程式指令查詢本機圖形處理器的功能及規格
    2. Thread, Thread Block, Grid, Warp 平行計算模式概念說明
    3.學習簡單的CUDA平行程式撰寫
    a.陣列平行相加(學習調整Thread Block)
    b. 2-D / 3-D矩陣平行相加
    4. GPU global, constant, shared 記憶體的階層概念及使用方法說明
    a.矩陣平行相乘 (未使用shared記憶體)
    b.矩陣平行相乘 (使用shared記憶體加速)
    c.學習使用constant記憶體及shared記憶體
    5.應用圖形處理器計時器及一般中央處理器計時器評估CUDA程式的效能
    a.在陣列及矩陣平行程式中加入計時器評估效能
    b.學習CUDA程式效能分析方法
    6.真實記憶體頻寬的計算方法說明
    a.在矩陣平行相乘程式中加入記憶體頻寬計算
    b.學習使用page-locked (pinned)記憶體加速資料傳輸
    7. Texture及Surface記憶體使用方法介紹
    a.學習CUDA影像rotate及mirror平行處理程式
    b.學習以Texture及Surface記憶體加速影像處理
    8. CUDA一般及intrinsic數學運算函數介紹
    9. CUDA atomic函數使用介紹
    10. NVIDIA圖形處理器架構演進介紹
    Day 2:
    1.個案研究A: 使用CUDA實現平行Sobel Filtering
    2. OpenGL及其與CUDA 3D互動簡介
    3.個案研究B: OpenGL與CUDA 3D互動實例探討
    4.加大記憶體資料流通量(throughput)的基本法則說明
    5. Global記憶體的相鄰存取安排
    - 程式範例: aligned記憶體相鄰存取程式追蹤
    6. Shared記憶體的bank平行存取概念
    - 程式範例: matrix transpose程式追蹤
    7. Page-locked及Zero Copy CPU主記憶體使用方式說明
    8. 重疊GPU計算與資料傳遞的非同步傳輸模式
    - 程式範例: asynchronous API平行程式追蹤
    9.平行streams及events的使用方法
    - 程式範例: multiple streams平行程式追蹤
    10. CUDA Unified Virtual Addressing (UVA)多重GPU運算及SDK新功能介紹
    - 程式範例: Peer-to-Peer多重GPU平行資料存取
    - 程式範例: 使用單CPU thread控制多重GPU
    11.個案研究 C: 使用CUDA實現N Body Simulation
    12.個案研究 D: 使用Reduction方法進行最佳化
    13.個案研究 E: 使用CUDA計算Monte Carlo應用於財務工程
    14.整體性能最佳化的策略說明
  • 開課日期:2019-09-17
  • 結束日期:2019-09-24
  • 上課時間:09:00~17:00
  • 上課時數:14
  • 課程費用:8,500元
  • 費用:學員負擔:4,250元/政府負擔:4,250元
  • 繳費方式:需先至開課單位繳交全額費用
  • 預計招生人數:20
  • 聯絡人:林宛佩
  • 連絡電話:03-5623116 ext 3221
  • 先備知識:
    建議學員具備基本C程式語言設計知識
  • 授課師資:兌全有限公司 鄭羽熙總經理
  • 招生對象:
    歡迎大專以上理工相關科系,具備C程式語言的設計基礎者均可參加此課程。
  • 上課地點:新竹市光復路二段101號 (清華大學創新育成大樓2樓)
  • 課程報名網址: