我認為只有以下方向適合入坑,如有錯誤,不歡迎指正;切勿輕信,概不負責 :)
1、聚合通信和多GPU編程
為了降低tail latency,一般用單機多卡推理,涉及到通信,但Triton對多卡的支持遠沒有單卡完善。舉個例子,CUDA目前不支持單機多卡同步(比如`__syncgpus()`)。已知多卡支持P2P,如何手擼算子實現多卡間barrier sync?對PTX內存一致性模型(memory consistency model)理解深不深刻直接影響同步的性能,不同實現性能差距高達200%。此外,用GPUDirect RDMA一把梭哈可以實現很多意想不到的性能提升…Triton和cuTLASS發展迅猛,單機SIMT已經沒啥搞頭了…
2、DSA編程技術探索
老黃賣卡不斷塞DSA打雞血,本是違背GPGPU祖訓的玩意,嚴重破壞SIMT編程模型。新卡到手如何使用這些DSA成了大問題…Hopper 2年前出的,白皮書更早了,大家早就知道有async barrier、async mem copy和TMA這些,但為啥直到今年五月TK、七八月FA3才有(相對)不錯的應用呢(暫不考慮CUDA有bug)?cluster內distributed shmem對什么負載用?L2$ residency control該對什么負載設,怎么設?我不信沒人探索過這些…
3、DSL和編譯
沒必要一直盯著Triton這個Python DSL。自己造個小DSL不好嗎?上文說到DSA破壞SIMT編程模型,FA3寫得那個丑啊…TK不香嗎?能不能設計1種編程模型隱藏DSA復雜的使用方法,比如封裝TMA和async mem copy?能不能設計1種編程模型隱藏通信和計算疊加,比如顯式地把矩陣乘和allreduce融合?塞DSA欠的technical debt太多了,縫縫補補設計新編程模型,極大簡化開發效率,多香!
老黃隔年賣新卡解決了不少就業問題:新硬件,新參數,又來活兒辣!但這是人力密集型勞動,不是智力密集型勞動,需求很快就填滿了。數據并行只是負載的某個狹隘的特征;并不能因為這類負載占用大量算力,就說它是最重要的負載。
CUDA并行編程對體系結構知識的要求很淺(做GPU微架構或調度器另說),加上開源資料少,沒啥能學的。自學?捧著塊GTX消費級顯卡按照教程擼幾個算子測性能提升沒有意義,綠廠那么大團隊當真吃干飯的,矩陣乘還用你寫?