如果你在看 AI、深度學習、影像處理或高效能運算(HPC)的文章,一定會反覆看到一個名詞:CUDA。
很多人知道「跑 AI 要用 CUDA」,但又說不清楚 CUDA 到底是什麼。
這篇文章,我不走艱深公式、不堆專有名詞,只用生活化比喻與圖像感,帶你真正理解 CUDA 在做什麼。



一句話先說清楚:什麼是 CUDA?
CUDA 是一套「讓 GPU 可以同時做很多一樣事情的方法與規則」。
它不是一張顯示卡,也不是一顆晶片,而是 教電腦如何「正確指揮 GPU 做大量平行工作的方式」。
為什麼需要 CUDA?先看 CPU vs GPU 的差別
CPU:聰明但人少
- 像一位很聰明的主管
- 一次只能專心做幾件事
- 很擅長判斷、流程控制、例外處理
GPU:人很多但不太聰明
- 像一間超大型工廠
- 裡面有上萬個小工人
- 每個人只會做「很單純、重複」的事


👉 如果事情可以拆成「很多一模一樣的小任務」
GPU 就能一次全部做完,速度遠超 CPU。
CUDA 在中間扮演什麼角色?
這時候問題來了:
GPU 這麼多人,要怎麼「有效指揮」?
答案就是:CUDA
你可以把 CUDA 想成:
- 一套 工作分工規則
- 一套 執行流程設計
- 一套 記憶體使用方法
讓 CPU 能夠很清楚地告訴 GPU:
「這個工作要拆成多少份」
「每個人做哪一小格」
「算完之後怎麼收結果」
CUDA 是由 NVIDIA 設計,專門給自家 GPU 使用。
CUDA 最重要的概念:三層工作結構
CUDA 把 GPU 的工作,分成三個層級(這是理解 CUDA 的關鍵)。


Thread(執行緒)= 一個人
- 最小的工作單位
- 負責「一個非常小的計算」
例如:
- 算一個像素
- 算矩陣中的一格
Block(區塊)= 一個小組
- 一群 thread
- 同一組的人可以共用資料、互相配合
像是:
- 一個班級掃一間教室
- 共用同一桶水、同一把拖把
Grid(網格)= 全部人
- 所有 block 的集合
- 就是「整個任務」
📌 好記版口訣:
Grid(全部)
└── Block(分組)
└── Thread(個人)
CUDA Kernel 是什麼?(超白話)
Kernel 不是核心,也不是作業系統。
👉 在 CUDA 裡,Kernel 就是:
「每一個 GPU 工人都要照著做的那一段工作說明書」
CPU 只寫一次 Kernel
GPU 會讓 上萬個 thread 同時執行同一份 Kernel
差別只有一個:
👉 每個人拿到的資料位置不同
為什麼 CUDA 會這麼快?
因為它不是「算得比較聰明」,而是:
「很多人一起算」
CPU 的做法
算第 1 個 → 算第 2 個 → 算第 3 個 → …
CUDA + GPU 的做法
1 萬個人,同時算 1 萬個
只要你的問題符合以下特性,CUDA 就會非常有效:
- 計算規則一樣
- 資料很多
- 可以獨立計算
CUDA 記憶體,用「倉庫」來想就好


Global Memory(大倉庫)
- 很大、很慢
- 所有人都能拿
Shared Memory(小工具箱)
- 比較小、很快
- 同一個 block 共用
Register(口袋)
- 超快、超小
- 只能自己用
👉 CUDA 很重要的一件事,就是教你:資料該放哪裡才會快
CUDA 是不是萬能?不是
CUDA 很強,但不是什麼都適合。
適合 CUDA 的情境
- AI 訓練 / 推論
- 深度學習
- 影像、影片處理
- 大量數值、矩陣運算
不適合 CUDA 的情境
- if / else 很多
- 邏輯複雜、流程依賴強
- 資料量很小
總結:真正理解 CUDA 的一句話
CUDA 不是硬體,而是一套「讓 GPU 同時做大量重複工作的做事方法」。
CPU 負責思考與指揮
GPU 負責大量執行
CUDA 負責把兩者「接起來」