平常在看 vLLM、SGLang、PagedAttention、speculative decoding,或是一些 CUDA kernel 的時候,常常會有一種...
現在的大型語言模型,大部分都是跑在 GPU 上。 那第一個問題就是: 為什麼是 GPU,而不是 CPU? CPU 當然也可以跑模型,只是 LLM 裡有大量可...
昨天提到,當一個 Warp 在等 memory 的時候,GPU 可以先去執行其他 ready 的 Warp,用這種方式把等待時間藏起來。 但這邊其實會冒出另一個...
上一篇提到,GPU optimization 很多時候不只是讓運算本身變快,還要想辦法減少資料搬移。 那要怎麼知道一個程式到底是: 算不夠快,還是資料搬不夠快...
前幾天一路從 GPU 的 Thread、Warp、Memory Hierarchy 講到 Roofline Model。 今天終於可以真的來寫一個 CUDA k...
昨天在 LeetGPU 上寫了最簡單的 GEMM: C = alpha * (A × B) + beta * C 做法也很直覺: 一個 Thread 算一個...
前兩天我們一直在優化 GEMM: Naive GEMM ↓ Shared Memory Tiling ↓ Register / Thread T...
前幾天一路從 GPU、Memory Hierarchy 講到 GEMM 和 Tensor Core。 但真的跑 LLM 時,GPU 並不是只做矩陣乘法。 今天先...
上一篇把一個 Transformer Layer 拆成 GEMM、elementwise、reduction 和 data movement。 但同一個 Lay...
上一篇看到,Prefill 有大量 tokens 可以組成大型 GEMM。 但 context 變長後,Attention 會產生另一個問題: 不是算太多,而...