聯繫我們

課程簡介

GPU加速運算入門

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

使用Thrust與CUB的並列演算法

  • GPU加速的排序、歸約與轉換。
  • 將STL演算法重構為適合GPU執行的版本。
  • Thrust裝置向量與執行策略。
  • CUB用於自訂管線的全域裝置原語。

GPU記憶體架構與管理

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

CUDA串流的非同步執行

  • 建立與管理CUDA串流。
  • 重疊核處理序執行與資料傳輸。
  • 使用CUDA事件進行依賴管理。
  • 串流優先權與並發性調整。

編寫自訂CUDA核處理序

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

執行緒階層與執行模型

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

合作群組實現靈活並行

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

共用記憶體最佳化技術

  • 共用記憶體儲存體與避免儲存體衝突。
  • 矩陣運算的分塊策略。
  • 將共用記憶體用作使用者管理的快取。
  • 使用cuda::shared_memory_mdspan實現多维檢視。

核處理序融合與進階並行模式

  • 融合多個核處理序以降低啟動開銷。
  • 掃描、按鍵歸約與分段演算法。
  • 原子操作與無鎖資料結構。
  • 使用warp聚合原子操作提升吞吐量。

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

  • CPU與GPU活動的時間軸分析。
  • 識別記憶體傳輸瓶頸。
  • 核處理序效能與佔用率分析。
  • 使用Nsight Compute進行迭代最佳化。

CUDA裝置程式碼中的現代C++特性

  • 在核處理序中使用Lambdas、constexpr與auto。
  • C++17並列演算法與執行策略。
  • C++20概念與ranges於裝置上的應用。
  • C++23在nvcc與CCCL 3.x中的支援。

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)

即將到來的課程

課程分類