功能开关¶
功能开关是 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/config/feature_list.py 中向 FeatureGateName 枚举定义添加一个新值。
class FeatureGateName(Enum):
...
# Add here
EXAMPLE_FEATURE = auto()
虽然不是必需的,但最好镜像 fbgemm_gpu/config/feature_gates.h 中定义的枚举值以保持一致性。
启用功能开关¶
有关如何启用功能开关的代码示例,请参阅 功能开关 (C++) 和 功能开关 (Python) 中的文档。