聯繫我們

課程簡介

GPU 加速運算介紹

  • 異質運算與 CPU-GPU 架構。
  • CUDA 執行與記憶體空間。
  • 使用 nvcc 和 CMake 編譯 CUDA C++。
  • 驗證 GPU 開發環境。

使用 Thrust 和 CUB 的平行演算法

  • GPU 加速排序、歸約和轉換。
  • 重構 STL 演算法以適應 GPU 執行。
  • Thrust 裝置向量和執行策略。
  • CUB 用於自訂管線的裝置級原語。

GPU 記憶體架構與管理

  • 全域、常量和紋理記憶體類型。
  • 明確的裝置記憶體配置和傳輸。
  • 統一記憶體簡化數據存取。
  • 記憶體合併與存取模式最佳化。

CUDA 串流的非同步執行

  • 建立和管理 CUDA 串流。
  • 重疊核心執行與數據傳輸。
  • CUDA 事件管理依賴關係。
  • 串流優先級並行調優。

撰寫自訂 CUDA 核心

  • SIMT 程式設計模型與執行緒區塊執行。
  • 核心啟動配置與網格步進迴圈。
  • 執行緒索引和多維網格。
  • 錯誤處理和 CUDA 運行時 API 檢查。

執行緒層級與執行模型

  • 裝置代碼中的網格、區塊和執行緒。
  • 執行緒級原語和投票操作。
  • 區塊級同步和屏障。
  • 佔用率與資源利用率分析。

協作群組靈活平行性

  • 協作群組 API 與群組類型。
  • 執行緒區塊瓦片與 tiled_partition。
  • 網格級協作啟動。
  • 多網格同步模式。

共享記憶體最佳化技術

  • 共享記憶體銀行與避免衝突。
  • 矩陣運算的瓦片策略。
  • 作為使用者管理快取的共享記憶體。
  • 用於多維視圖的 cuda::shared_memory_mdspan。

核心融合與進階平行模式

  • 融合多個核心以降低啟動開銷。
  • 掃描、按鍵歸約和分段演算法。
  • 原子操作與無鎖數據結構。
  • 提高吞吐量的執行緒聚合原子操作。

使用 Nsight Systems 進行分析與最佳化

  • CPU 和 GPU 活動的時間軸分析。
  • 識別數據傳輸瓶頸。
  • 核心效能與佔用率分析。
  • 使用 Nsight Compute 進行迭代最佳化。

CUDA 裝置代碼中的現代 C++ 功能

  • 核心中的 lambda、constexpr 和 auto。
  • C++17 平行演算法與執行策略。
  • C++20 概念與範圍在裝置上的應用。
  • nvcc 和 CCCL 3.x 對 C++23 的支持。

CUDA 圖形與進階非同步性

  • 定義和啟動 CUDA 圖形。
  • 從串流執行捕獲圖形。
  • 更新圖形與條件執行節點。
  • 降低迭代工作負載的啟動延遲。

現有應用程式的整合模式

  • 在 C++ 介面後包裝 GPU 代碼。
  • 管理多 GPU 和 NUMA 系統。
  • 使用 CMake 和 CUDA 進行建構系統整合。
  • 使用 cuda-gdb 除錯裝置代碼。

總結與最佳實踐

  • 在 Thrust、CUB 和自訂核心之間做出選擇。
  • 跨 GPU 架構的性能可移植性。
  • CUDA 資源的代碼組織和 RAII。
  • 後續步驟與進階 CUDA 學習路徑。

最低要求

  • 具備基本 C++ 能力,包括 lambda 表達式、模板和 STL。
  • 熟悉標準演算法、容器和迭代器。
  • 熟練使用迴圈、條件判斷和函數。
  • 無需先前的 CUDA 或 GPU 程式設計知識。

受眾

  • 尋求利用 GPU 加速運算密集型應用程式的 C++ 開發者。
  • 從僅限 CPU 轉向異質平行程式設計的軟體工程師。
  • 處理大數據集的性能工程師和量化開發者。
 8 小時

客戶評論 (3)

課程分類