聯繫我們

課程簡介

GPU加速計算簡介

  • 異構計算與CPU-GPU架構。
  • CUDA執行空間與內存空間。
  • 使用nvcc和CMake編譯CUDA C++代碼。
  • 驗證GPU開發環境。

Thrust與CUB並行算法

  • GPU加速的排序、規約和轉換操作。
  • 重構STL算法以支持GPU執行。
  • Thrust設備向量及執行策略。
  • 用於自定義流水線的CUB設備級原語。

GPU內存架構與管理

  • 全局、常量和紋理內存類型。
  • 顯式的設備內存分配與傳輸。
  • 用於簡化數據訪問的統一內存。
  • 內存合併及訪問模式優化。

CUDA流的異步執行

  • 創建和管理CUDA流。
  • 重疊內核執行與數據傳輸。
  • 利用CUDA事件管理依賴關係。
  • 流優先級與併發調優。

編寫自定義CUDA內核

  • SIMT編程模型與Warp執行機制。
  • 內核啓動配置及Grid跨度循環。
  • 線程索引與多維Grid。
  • 錯誤處理與CUDA運行時API檢查。

線程層級與執行模型

  • 設備代碼中的Grid、Block和Thread。
  • Warp級原語與投票操作。
  • Block級同步與屏障。
  • 佔用率與資源利用率分析。

用於靈活並行的協作組

  • 協作者組API及組類型。
  • 線程塊圖塊與tiled_partition。
  • Grid級協作啓動。
  • 多Grid同步模式。

共享內存優化技術

  • 共享內存銀行及避免Bank衝突。
  • 矩陣運算的分塊策略。
  • 作爲用戶管理緩存的共享內存。
  • 用於多維視圖的cuda::shared_memory_mdspan。

內核融合與高級並行模式

  • 融合多個內核以減少啓動開銷。
  • 掃描、按鍵規約及分段算法。
  • 原子操作與無鎖數據結構。
  • 用於提升吞吐量的Warp聚合原子操作。

Nsight Systems剖析與優化

  • CPU與GPU活動的時間軸分析。
  • 識別內存傳輸瓶頸。
  • 內核性能與佔用率剖析。
  • 利用Nsight Compute進行迭代優化。

CUDA設備代碼中的現代C++特性

  • 內核中的Lambdas、constexpr和auto。
  • C++17並行算法及執行策略。
  • 設備端的C++20概念與Ranges。
  • 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)

即將到來的課程

課程分類