Shortcuts

Feature Gates

Feature Gates are a mechanism provided in the FBGEMM_GPU codebase that provides a consistent way to enable and disable experimental features based on environment settings.

While it can be thought of as a type-safe abstraction over environment variables, note that feature gates are a run-time mechanism for controlling code behavior.

Creating a Feature Gate

Feature Gates should be created if the intent is to land a feature into the codebase, but defer its enablement until further verification in production workloads.

C++

To define a feature gate on the C++ side, append to the ENUMERATE_ALL_FEATURE_FLAGS X-macros definition in fbgemm_gpu/config/feature_gates.h:

#define ENUMERATE_ALL_FEATURE_FLAGS   \
  X(...)                              \
  ...                                 \
  X(EXAMPLE_FEATURE)  // <-- Append here

Python

To define a feature gate on the Python side, simply add a new value to the FeatureGateName enum definition in fbgemm_gpu/config/feature_list.py:

class FeatureGateName(Enum):
  ...
  # Add here
  EXAMPLE_FEATURE = auto()

While not required, it is best to mirror the enum values defined in fbgemm_gpu/config/feature_gates.h for consistency.

Enabling a Feature Gate

See the documentation in Feature Gates (C++) and Feature Gates (Python) for code examples of how to enable feature gates.

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources