特性开关¶
特性开关是 FBGEMM_GPU 代码库中提供的一种机制,它提供了一种基于环境设置启用和禁用实验性功能的统一方式。
虽然可以将其视为环境变量之上的类型安全抽象,但请注意,特性开关是控制代码行为的**运行时机制**。
创建特性开关¶
如果目的是将某项功能集成到代码库中,但要推迟其启用,直到在生产工作负载中进行进一步验证,则应创建特性开关。
C++¶
要在 C++ 端定义特性开关,请将定义添加到 fbgemm_gpu/config/feature_gates.h 文件中的 ENUMERATE_ALL_FEATURE_FLAGS X 宏定义中。
#define ENUMERATE_ALL_FEATURE_FLAGS \
X(...) \
... \
X(EXAMPLE_FEATURE) // <-- Append here
Python¶
要在 Python 端定义特性开关,只需将新值添加到 fbgemm_gpu/fbgemm_gpu/config/feature_list.py 文件中的 FeatureGateName 枚举定义中。
class FeatureGateName(Enum):
...
# Add here
EXAMPLE_FEATURE = auto()
虽然不是必需的,但最好与 fbgemm_gpu/config/feature_gates.h 中定义的枚举值保持一致,以提高一致性。
启用特性开关¶
请参阅 特性开关 (C++) 和 特性开关 (Python) 中的文档,获取有关如何启用特性开关的代码示例。