工程開發
add-uint-support avatar

add-uint-support

更新 PyTorch AT_DISPATCH_V2 巨集,為運算子和核心啟用 uint16、uint32 及 uint64 支援。

簡介

此技能旨在自動化將 PyTorch 運算子類型覆蓋範圍擴展至包含無號整數類型 (uint16、uint32 與 uint64) 的過程。它專為需要更新 C++ 派發邏輯以確保核心能夠處理無號輸入的 PyTorch 開發人員與函式庫維護者所設計。透過管理 AT_DISPATCH_V2 巨集的轉換與擴展,本技能確保了 CPU 與 CUDA 實作之間的一致性類型安全與核心執行效能。

此技能會識別目前的派發結構,判斷是否有必要轉換為 V2 巨集格式,並套用適當的類型群組擴展,例如 AT_BAREBONES_UNSIGNED_TYPES 或 AT_INTEGRAL_TYPES_V2。它處理了諸如從舊版 AT_DISPATCH 升級、將無號支援整合至浮點數類型旁,以及處理單一原始碼檔案中多個派發站點等常見情境。這種操作支援能減少手動編寫程式碼的工作量、降低類型不匹配的錯誤,並確保程式碼符合 PyTorch 不斷演進的派發需求。

  • 啟用 PyTorch 運算子與核心實作對 uint16、uint32 與 uint64 的支援。

  • 標準化 AT_DISPATCH_V2 巨集的使用,以提升類型派發效率與可維護性。

  • 自動將 AT_BAREBONES_UNSIGNED_TYPES 與 AT_INTEGRAL_TYPES_V2 注入運算子派發清單中。

  • 簡化從舊版派發巨集遷移至建議的 V2 架構的路徑。

  • 支援多站點更新,確保單一檔案內所有 CPU 與 CUDA 派發定義具備一致的涵蓋範圍。

  • 在套用之前,請先確認現有的程式碼是否已使用 AT_DISPATCH_V2;若否,請先使用專屬的遷移邏輯來升級巨集格式。

  • 在適用的情況下優先採用方法二 (替換為 AT_INTEGRAL_TYPES_V2),這提供了一種更簡潔且包含無號整數的完整涵蓋方式。

  • 確保所有派發站點 (如 CPU、CUDA 與內部的核心實作) 皆獲得統一更新,以防止執行期間的類型錯誤。

  • 所有類型群組皆應使用 AT_EXPAND(),以確保編譯期間能正確執行巨集展開。

  • 本技能假設開發者可存取標準 ATen 派發標頭檔,並與 PyTorch 目前基於巨集的類型派發系統相容。

倉庫統計

Star 數
99,495
Fork 數
27,610
Open Issue 數
18,545
主要語言
Python
預設分支
main
同步狀態
閒置
最近同步時間
2026年4月28日 下午12:39
在 GitHub 查看