聯繫我們

課程簡介

介紹

  • CUDA是什麼?
  • CUDA與OpenCL和SYCL的比較
  • CUDA特性和架構概述
  • 設置開發環境

入門指南

  • 使用Visual Studio Code創建新的CUDA項目
  • 探索項目結構和文件
  • 編譯並運行程序
  • 使用printf和fprintf顯示輸出

CUDA API

  • 了解CUDA API在主機程式中的作用
  • 使用CUDA API查詢設備資訊和能力
  • 使用CUDA API配置和釋放裝置記憶體
  • 使用CUDA API在主機與設備間複製數據
  • 使用CUDA API啟動內核並同步執行緒
  • 使用CUDA API處理錯誤和異常

CUDA C/C++

  • 了解CUDA C/C++在設備程式中的作用
  • 使用CUDA C/C++編寫在GPU上執行的內核並操作數據
  • 使用CUDA C/C++的數據類型、修飾符、運算符和表達式
  • 使用CUDA C/C++內建函式,如數學函式、原子操作、Warp功能等
  • 使用CUDA C/C++內建變數,如threadIdx、blockIdx、blockDim等
  • 使用CUDA C/C++庫,如cuBLAS、cuFFT、cuRAND等

CUDA記憶體模型

  • 理解主機和設備記憶體模型的差異
  • 使用CUDA記憶體空間,如全域、共享、常數和本地
  • 使用CUDA記憶體物件,如指標、陣列、紋理和表面
  • 使用CUDA記憶體存取模式,如唯讀、寫入只讀、讀寫等
  • 使用CUDA記憶體一致性模型和同步機制

CUDA執行模型

  • 理解主機和設備執行模型的差異
  • 使用CUDA的執行緒、區塊和網格定義平行化
  • 使用CUDA執行緒函式,如threadIdx、blockIdx、blockDim等
  • 使用CUDA區塊函式,如__syncthreads、__threadfence_block等
  • 使用CUDA網格函式,如gridDim、gridSync、協作群組等

調試

  • 了解CUDA程式中常見的錯誤和Bug
  • 使用Visual Studio Code除錯器檢查變數、斷點、呼叫堆疊等
  • 在Linux上使用CUDA-GDB調試CUDA程式
  • 使用CUDA-MEMCHECK檢測記憶體錯誤和洩漏
  • 在Windows上使用NVIDIA Nsight調試和分析CUDA程式

最佳化

  • 了解影響CUDA程式效能的因素
  • 使用CUDA並行存取技術提高記憶體吞吐量
  • 使用CUDA快取和預取技術降低記憶體延遲
  • 使用CUDA共享記憶體和本地記憶體技術優化記憶體存取和頻寬
  • 使用CUDA分析及分析工具衡量並改進執行時間和資源利用率

總結與下一步

最低要求

  • 理解C/C++語言及平行程式設計概念。
  • 具備電腦架構和記憶體層級的基本知識。
  • 具有使用命令列工具和程式碼編輯器的經驗。

對象

  • 希望學習如何使用CUDA編程NVIDIA GPU並發揮其平行能力的開發人員。
  • 希望撰寫可在不同CUDA設備上運行的高效能和可擴展程式的開發人員。
  • 希望探索GPU編程底層細節並最佳化代碼效能的程序員。
 28 小時

課程分類