我這一生如履薄冰,你說我能優化這個 Kernel 嗎?
「我這版一定比較快。」——每個開始改 CUDA Kernel 的人,應該都曾經這麼想過。然後打開 Profiler:蛤,怎麼更慢了。
這 30 天想拿一些實際的 Kernel(以及以前寫過的東西)出來鞭屍。大概每三天一個小循環:實作 → Profile 抓戰犯 → 優化 → 看數字,試著從數據裡找出「為什麼慢」以及「憑什麼覺得還能更快」。
Memory、Warp、Occupancy、PTX……能踩的坑應該都會踩一點。
P.S. 重賽板我回盡量有趣一點ㄉ
這次能不能順利完賽...我也不知道...
因為耍笨忘記發文所以中斷ㄌ...還雷到團體賽的隊友...10分有11分的抱歉但聽說重賽完成還是可以拿獎牌.... 想說 不寫白不寫 不然 就... 所以來ㄌ個重...
昨天我們聊的是「什麼叫做優化」。一個 Kernel 跑 100 ms,光看這個數字其實沒有太多意義。你至少得知道原本多快、改了什麼,以及時間究竟花在哪裡。 但要...
Day 3 — 先猜,再問硬體 (還在趕草稿 可惡><) Day 2 我們一路從 Thread、Warp 看到 Block,最後把 naïve GE...
這篇是重賽版。 原版 Day 4 有一段「今天很雷包,但文章還是要繼續」的心情開場。那段不是不要了,只是這次先收去文末註解。因為今天要講的不是我的心情,是一個更...
昨天從 GEMM 講起:同一句 C = A × B 有很多算法,其中一條路需要很高的精度,但消費級卡把 FP64 閹得很慘。 不過老實說 你真的看過昨天的內容嗎...
Day 6|先把 Ozaki / CRT 拆成 pipeline 昨天我們把原理講完了。 今天先不急著寫到 PTX、GPU Assembly,或是 mma.sy...
Day 7|CRT 表:7 個質數怎麼拼回一個大整數 昨天把 Phase 22 拆成三段: 建構 CRT → 求餘數 → INT8 GEMM → CRT 重建...
前兩天我們做了兩件事: Day 6:把 Phase 22 拆成三段 pipeline Day 7:把 CRT 表和 reconstruct kernel 講清楚...
(我故意把原版的放著 然後就拖到現在的進度了 等我重賽版的上完 再放回去原本的版本ㄅ) 昨天我們把 A8 @ B8 拆成最笨的 naive INT8 GEMM。...
前幾天我們已經把幾個零件拆開看過了。 Day 6 先把問題拆成 pipeline: 選模數 / 建 CRT 空間 -> 把輸入轉成餘數矩陣 -> I...