我這一生如履薄冰,你說我能優化這個 Kernel 嗎?
我這一生如綠豆糕,可不可以讓我遠離棋盤?
我也不知道。
「我這版一定比較快。」——每個開始改 CUDA Kernel 的人,應該都曾經這麼想過。然後打開 Profiler:蛤,怎麼更慢了。
這 30 天想拿一些實際的 Kernel(以及以前寫過的東西)出來鞭屍。大概每三天一個小循環:實作 → Profile 抓戰犯 → 優化 → 看數字,試著從數據裡找出「為什麼慢」以及「憑什麼覺得還能更快」。
Memory、Warp、Occupancy、PTX……能踩的坑應該都會踩一點。
能不能成功走到效能的對岸,我也不知道...
所以,蝦米是優化? 首先,蝦米是優化? 假設今天我們手上有一個 Kernel、一個程式,或者 whatever,反正我們現在只知道一件事情:它跑了 100 ms...
昨天我們聊的是「什麼叫做優化」。一個 Kernel 跑 100 ms,光看這個數字其實沒有太多意義。你至少得知道原本多快、改了什麼,以及時間究竟花在哪裡。 但要...
Day 3 — 先猜,再問硬體 (還在趕草稿 可惡><) Day 2 我們一路從 Thread、Warp 看到 Block,最後把 naïve GE...
Day 4|GEMM 要高精度的時候,4060 先把路封了 知恥而後勇,是我的一種信念。但有時候我也覺得自己已經不是勇不勇,是有點傻了,哈哈哈哈。言而總之,今天...
昨天從 GEMM 講起:同一句 C = A × B 有很多算法,其中一條路需要很高的精度,但消費級卡把 FP64 閹得很慘。 然後留下一個比較討厭的問題: 既...
Day 6|先把 Ozaki / CRT 拆成 pipeline 昨天我們把原理講完了。 今天先不急著寫到 PTX、GPU Assembly,或是 mma.sy...
昨天把 Phase 22 拆成三段: 建構 CRT → 求餘數 → INT8 GEMM → CRT 重建 今天只看第一段。 問題很小: 這 7 個質數跟那些...
前兩天我們做了兩件事: Day 6:把 Phase 22 拆成三段 pipeline Day 7:把 CRT 表和 reconstruct kernel 講清楚...