面試陷阱題 (Exam Traps)

Purpose

本檔收錄第一章 (Introduction to CUDA) 最容易答錯與最常被混淆的觀念,專供面試與測驗前快速複習使用。每個陷阱以可折疊 (fold) callout 呈現:先看標題自我作答,再展開核對「陷阱是什麼 / 為何容易混淆 / 正確觀念」,並附對應概念筆記連結深入回讀。建議搭配 速查表 一起服用。

GPU 基礎

執行模型與 SIMT

Tile 程式設計

記憶體階層

CUDA 平台與相容性

第二章:Programming GPUs in CUDA

Purpose

本區延續上方格式,收錄第二章 (Programming GPUs in CUDA) 最容易答錯與最常被混淆的觀念,涵蓋 CUDA C++/Python 的 host 端流程、SIMT 與 Tile 兩種 kernel 模型、非同步執行、Unified/System Memory 與 NVCC。用法相同:先看標題自我作答,再展開核對「陷阱是什麼 / 為何容易混淆 / 正確觀念」,並沿 回讀 連結深入。

CUDA C++

CUDA Python

SIMT Kernels

整欄 = 32-way)

  • 陷阱是什麼:宣告 __shared__ float s[32][32] 就以為 shared memory 一定快,忽略 bank conflict。
  • 為何容易混淆:shared memory 在 SM 上、延遲低,容易以為任何存取樣式都高效。
  • 正確觀念:shared memory 分 32 個 bank,連續 32-bit word 對映連續 bank(word % 32)。同 warp 多 thread 存取同一 bank 的不同位置序列化(bank conflict)s[32][32] 按「整欄」存取(s[threadIdx.x][threadIdx.y],threadIdx.x 當第一索引)stride = 32 → 全落 bank 0 → 32-way conflict;按「整列」stride = 1 → 無衝突。解法是 padding:欄維 +1 宣告成 [32][33],列長 33 與 32 互質,使整欄存取錯開到 32 個不同 bank。例外(無衝突):同 warp 存取同一位置時,讀會 broadcast、寫只有一個 thread 寫入(哪個未定義)。
  • 回讀:SIMT 記憶體效能

Tile Kernels

Asynchronous Execution

Unified/System Memory

NVCC

第三章:Advanced CUDA

Purpose

本區延續上方格式,收錄第三章 (Advanced CUDA) 最容易答錯與最常被混淆的觀念,涵蓋進階啟動 / clusters、進階 streams 與相依啟動、批次傳輸與環境變數、PTX 與硬體模型、thread scopes 與 scoped atomics、非同步 barriers / pipelines、非同步資料複製與 L1/shared 配置、driver API、多 GPU 與功能導覽。用法相同:先看標題自我作答,再展開核對「陷阱是什麼 / 為何容易混淆 / 正確觀念」,並沿 回讀 連結深入。

進階啟動與 Clusters

進階 Streams 與相依啟動

批次傳輸與環境變數

使用 PTX 與硬體模型

Thread Scopes 與 Scoped Atomics

非同步 Barriers 與 Pipelines

非同步資料複製與 L1/Shared 配置

CUDA Driver API

多 GPU 程式設計

CUDA 功能導覽

第四章:CUDA Features

Purpose

本區延續上方格式,收錄第四章 (CUDA Features) 最容易答錯與最常被混淆的觀念,涵蓋 Unified Memory、CUDA Graphs、Stream-Ordered Allocator、Cooperative Groups、PDL、Green Contexts、Lazy Loading、非同步 barriers/pipelines、三種 async copy (LDGSTS/TMA/STAS)、Work Stealing、L2 Cache Control、Memory Sync Domains、IPC、Virtual Memory Management、EGM、Dynamic Parallelism、Graphics/External Interop 與 Driver Entry Point Access。用法相同:先看標題自我作答,再展開核對「陷阱是什麼 / 為何容易混淆 / 正確觀念」,並沿 回讀 連結深入。

Unified Memory

CUDA Graphs(擷取與更新)

CUDA Graphs(條件節點與裝置端啟動)

Stream-Ordered Memory Allocator

Cooperative Groups

Programmatic Dependent Launch

Green Contexts

Lazy Loading 與 Error Log

Asynchronous Barriers 與 Pipelines

非同步資料複製(LDGSTS / TMA / STAS)

Work Stealing 與 Cluster Launch Control

L2 Cache Control

Memory Synchronization Domains

Interprocess Communication

Virtual Memory Management

Extended GPU Memory

CUDA Dynamic Parallelism

Graphics / External Resource Interop

Driver Entry Point Access