GitHub Repo
PyTorch 社群回報大型 bmm 越界寫入,GB200 重現揭穩定分支修補落差
10 月 27 日的 PyTorch 社群回報指出,特定矩陣形狀可能讓原生 Triton 核心的 32 位元位移溢位,造成 CUDA 程序後續運算接連失敗。回報者表示主線與 2.15 分支已有修補,但穩定分支回補仍待確認。

PyTorch 社群於 10 月 27 日提出一份附有最小重現程式的錯誤回報:在 NVIDIA GB200、PyTorch 2.13.0+cu130 上,收縮維度 K=1 的 torch.bmm 可能觸發越界寫入。截至查核時,議題仍開放,尚無維護者確認回補安排;回報者揭露文章由 AI 協助整理,實驗與分支檢查則由本人執行。問題回報
bmm 將兩組三維張量逐批相乘,輸入形狀為 [b,n,m] 與 [b,m,p],輸出為 [b,n,p]。當中間維度為 1,每批運算便相當於外積;因此,即使輸入很小,輸出仍可能迅速放大。這也是檢查大型張量索引時,不能只看輸入大小的原因。PyTorch API 文件
回報的測試將輸入設為 [512,B,1] 與 [512,1,512]。B 從 8208 增至 8209 時,最後一批的起始元素位移超過 INT32_MAX,原生核心開始報錯;作者將根因指向位移乘法使用 int32,溢位後寫入錯誤位置。其對照測試中,設定 TORCH_DISABLE_NATIVE_JIT=1 改走 cuBLAS,或將相關索引轉為 int64,均能通過所列案例。重現與邊界測試
這類錯誤會干擾後續診斷。NVIDIA 文件明確說明,cudaErrorIllegalAddress 代表核心存取無效位址,會使程序處於不一致狀態,後續 CUDA 工作持續回報錯誤,必須結束並重啟程序。工程團隊因此應將邊界案例分開執行,避免把連鎖失敗誤判為多個獨立問題。CUDA 錯誤定義
版本範圍仍須保留界線:實機重現來自 2.13.0 的 GB200 環境,2.14 的風險來自作者比對分支程式碼;主線與 2.15 已修正的說法也出自該回報。接下來應追蹤維護者是否確認穩定版影響、安排回補,以及替代執行路徑對實際工作負載的效能影響,不能據此推定所有 GPU 或所有矩陣乘法都受影響。版本檢查與回補請求