用途:该技能用于为 PyTorch 算子添加无符号整数类型(uint16、uint32、uint64)支持,核心手段是修改算子的 AT_DISPATCH 宏类型列表。当需要为算子启用 kUInt16、kUInt32、kUInt64,或用户提到 unsigned types、uint support、barebones unsigned types 时适用。
主要能力:提供两种添加方式。方法一:在类型列表中显式加入 AT_EXPAND(AT_BAREBONES_UNSIGNED_TYPES),该组包含 kUInt16、kUInt32、kUInt64。方法二:若原列表使用 AT_EXPAND(AT_INTEGRAL_TYPES),则将其替换为 AT_EXPAND(AT_INTEGRAL_TYPES_V2),后者为 AT_INTEGRAL_TYPES 与 AT_BAREBONES_UNSIGNED_TYPES 的超集。类型组关系:AT_ALL_TYPES 等于 AT_INTEGRAL_TYPES 加 AT_FLOATING_TYPES。
使用方式:先确认文件是否使用 AT_DISPATCH_V2;若仍是旧版 AT_DISPATCH,需先用 at-dispatch-v2 技能转换,再添加 uint 支持。随后分析当前 dispatch 宏的类型组,按决策树选择方法:存在 AT_INTEGRAL_TYPES 时优先替换为 AT_INTEGRAL_TYPES_V2;否则追加 AT_BAREBONES_UNSIGNED_TYPES。需检查文件中所有 dispatch 位置(如 CPU、CUDA、不同函数)并一致更新。完成后向用户展示改动并说明。
适用场景:为已有算子扩展类型覆盖,使其可接受 uint16、uint32、uint64 张量。
限制:仅支持浮点类型的算子不应添加 uint 支持;若已使用 AT_INTEGRAL_TYPES_V2 或已含 AT_BAREBONES_UNSIGNED_TYPES,则跳过。注意 kUInt16、kUInt32、kUInt64 与 kByte(uint8)不同。部分算子在语义上可能不支持无符号类型,需自行判断。添加后需由用户负责功能测试。