Skip to content

vllm.kernels.helion

Helion integration for vLLM.

Modules:

Name Description
config_manager

Configuration management for Helion kernels.

register

vLLM Helion kernel registration with pre-tuned config selection.

utils

Utility functions for Helion kernel management.

__all__ module-attribute

__all__ = [
    "ConfigManager",
    "ConfigSet",
    "ConfiguredHelionKernel",
    "HelionKernelWrapper",
    "get_kernel_by_name",
    "get_registered_kernels",
    "register_kernel",
    "vllm_helion_lib",
    "canonicalize_gpu_name",
    "get_canonical_gpu_name",
]

vllm_helion_lib module-attribute

vllm_helion_lib = Library('vllm_helion', 'FRAGMENT')

ConfigManager

File-level configuration management for Helion kernels (global singleton).

Source code in vllm/kernels/helion/config_manager.py
class ConfigManager:
    """File-level configuration management for Helion kernels (global singleton)."""

    _instance: "ConfigManager | None" = None
    _instance_base_dir: Path | None = None

    def __new__(cls, base_dir: str | Path | None = None) -> "ConfigManager":
        resolved_base_dir = cls._resolve_base_dir(base_dir)

        if cls._instance is not None:
            # Instance already exists - check for base_dir mismatch
            if cls._instance_base_dir != resolved_base_dir:
                raise ValueError(
                    f"ConfigManager singleton already exists with base_dir "
                    f"'{cls._instance_base_dir}', cannot create with different "
                    f"base_dir '{resolved_base_dir}'"
                )
            return cls._instance

        # Create new instance
        instance = super().__new__(cls)
        cls._instance = instance
        cls._instance_base_dir = resolved_base_dir
        return instance

    def __init__(self, base_dir: str | Path | None = None):
        # Only initialize if not already initialized
        if hasattr(self, "_base_dir"):
            return

        self._base_dir = self._resolve_base_dir(base_dir)
        logger.debug("ConfigManager initialized with base_dir: %s", self._base_dir)

    @staticmethod
    def _resolve_base_dir(base_dir: str | Path | None) -> Path:
        if base_dir is not None:
            return Path(base_dir).resolve()
        return (Path(__file__).parent / "configs").resolve()

    @classmethod
    def get_instance(cls) -> "ConfigManager":
        if cls._instance is None:
            raise RuntimeError(
                "ConfigManager instance has not been created. "
                "Call ConfigManager(base_dir=...) first to initialize."
            )
        return cls._instance

    @classmethod
    def reset_instance(cls) -> None:
        """For testing purposes only."""
        cls._instance = None
        cls._instance_base_dir = None

    def get_config_file_path(self, kernel_name: str) -> Path:
        return self._base_dir / f"{kernel_name}.json"

    def ensure_base_dir_exists(self) -> Path:
        self._base_dir.mkdir(parents=True, exist_ok=True)
        return self._base_dir

    def load_config_set(self, kernel_name: str) -> ConfigSet:
        config_path = self.get_config_file_path(kernel_name)
        if not config_path.exists():
            return ConfigSet.from_dict(kernel_name, {})

        try:
            with open(config_path) as f:
                data = json.load(f)
            return ConfigSet.from_dict(kernel_name, data)
        except (json.JSONDecodeError, OSError) as e:
            logger.error("Failed to load config file %s: %s", config_path, e)
            return ConfigSet.from_dict(kernel_name, {})

    def get_platform_configs(
        self, kernel_name: str, platform: str
    ) -> dict[str, helion.Config]:
        config_set = self.load_config_set(kernel_name)
        config_keys = config_set.get_config_keys(platform)

        return {
            config_key: config_set.get_config(platform, config_key)
            for config_key in config_keys
        }

    def save_config_set(self, config_set: ConfigSet) -> Path:
        config_path = self.get_config_file_path(config_set.kernel_name)
        config_path.parent.mkdir(parents=True, exist_ok=True)

        with open(config_path, "w") as f:
            json.dump(config_set.to_dict(), f, indent=2)

        logger.info("Saved config to: %s", config_path)
        return config_path

_base_dir instance-attribute

_base_dir = _resolve_base_dir(base_dir)

_instance class-attribute instance-attribute

_instance: ConfigManager | None = None

_instance_base_dir class-attribute instance-attribute

_instance_base_dir: Path | None = None

__init__

__init__(base_dir: str | Path | None = None)
Source code in vllm/kernels/helion/config_manager.py
def __init__(self, base_dir: str | Path | None = None):
    # Only initialize if not already initialized
    if hasattr(self, "_base_dir"):
        return

    self._base_dir = self._resolve_base_dir(base_dir)
    logger.debug("ConfigManager initialized with base_dir: %s", self._base_dir)

__new__

__new__(
    base_dir: str | Path | None = None,
) -> ConfigManager
Source code in vllm/kernels/helion/config_manager.py
def __new__(cls, base_dir: str | Path | None = None) -> "ConfigManager":
    resolved_base_dir = cls._resolve_base_dir(base_dir)

    if cls._instance is not None:
        # Instance already exists - check for base_dir mismatch
        if cls._instance_base_dir != resolved_base_dir:
            raise ValueError(
                f"ConfigManager singleton already exists with base_dir "
                f"'{cls._instance_base_dir}', cannot create with different "
                f"base_dir '{resolved_base_dir}'"
            )
        return cls._instance

    # Create new instance
    instance = super().__new__(cls)
    cls._instance = instance
    cls._instance_base_dir = resolved_base_dir
    return instance

_resolve_base_dir staticmethod

_resolve_base_dir(base_dir: str | Path | None) -> Path
Source code in vllm/kernels/helion/config_manager.py
@staticmethod
def _resolve_base_dir(base_dir: str | Path | None) -> Path:
    if base_dir is not None:
        return Path(base_dir).resolve()
    return (Path(__file__).parent / "configs").resolve()

ensure_base_dir_exists

ensure_base_dir_exists() -> Path
Source code in vllm/kernels/helion/config_manager.py
def ensure_base_dir_exists(self) -> Path:
    self._base_dir.mkdir(parents=True, exist_ok=True)
    return self._base_dir

get_config_file_path

get_config_file_path(kernel_name: str) -> Path
Source code in vllm/kernels/helion/config_manager.py
def get_config_file_path(self, kernel_name: str) -> Path:
    return self._base_dir / f"{kernel_name}.json"

get_instance classmethod

get_instance() -> ConfigManager
Source code in vllm/kernels/helion/config_manager.py
@classmethod
def get_instance(cls) -> "ConfigManager":
    if cls._instance is None:
        raise RuntimeError(
            "ConfigManager instance has not been created. "
            "Call ConfigManager(base_dir=...) first to initialize."
        )
    return cls._instance

get_platform_configs

get_platform_configs(
    kernel_name: str, platform: str
) -> dict[str, Config]
Source code in vllm/kernels/helion/config_manager.py
def get_platform_configs(
    self, kernel_name: str, platform: str
) -> dict[str, helion.Config]:
    config_set = self.load_config_set(kernel_name)
    config_keys = config_set.get_config_keys(platform)

    return {
        config_key: config_set.get_config(platform, config_key)
        for config_key in config_keys
    }

load_config_set

load_config_set(kernel_name: str) -> ConfigSet
Source code in vllm/kernels/helion/config_manager.py
def load_config_set(self, kernel_name: str) -> ConfigSet:
    config_path = self.get_config_file_path(kernel_name)
    if not config_path.exists():
        return ConfigSet.from_dict(kernel_name, {})

    try:
        with open(config_path) as f:
            data = json.load(f)
        return ConfigSet.from_dict(kernel_name, data)
    except (json.JSONDecodeError, OSError) as e:
        logger.error("Failed to load config file %s: %s", config_path, e)
        return ConfigSet.from_dict(kernel_name, {})

reset_instance classmethod

reset_instance() -> None

For testing purposes only.

Source code in vllm/kernels/helion/config_manager.py
@classmethod
def reset_instance(cls) -> None:
    """For testing purposes only."""
    cls._instance = None
    cls._instance_base_dir = None

save_config_set

save_config_set(config_set: ConfigSet) -> Path
Source code in vllm/kernels/helion/config_manager.py
def save_config_set(self, config_set: ConfigSet) -> Path:
    config_path = self.get_config_file_path(config_set.kernel_name)
    config_path.parent.mkdir(parents=True, exist_ok=True)

    with open(config_path, "w") as f:
        json.dump(config_set.to_dict(), f, indent=2)

    logger.info("Saved config to: %s", config_path)
    return config_path

ConfigSet

In-memory collection of Helion configs with lookup/query capabilities.

Source code in vllm/kernels/helion/config_manager.py
class ConfigSet:
    """In-memory collection of Helion configs with lookup/query capabilities."""

    # Type alias for nested config structure:
    # platform -> config_key -> helion.Config
    _ConfigDict = dict[str, dict[str, "helion.Config"]]

    def __init__(self, kernel_name: str):
        self._kernel_name = kernel_name
        self._configs: ConfigSet._ConfigDict = {}

    @property
    def kernel_name(self) -> str:
        return self._kernel_name

    def get_config(self, platform: str, config_key: str) -> helion.Config:
        platform_dict = self._configs.get(platform)
        if platform_dict is None:
            avail_platforms = self.get_platforms()
            raise KeyError(
                f"Config not found for kernel '{self._kernel_name}': "
                f"platform '{platform}' not found. "
                f"Available platforms: {avail_platforms or '(none)'}"
            )

        config = platform_dict.get(config_key)
        if config is None:
            avail_keys = self.get_config_keys(platform)
            raise KeyError(
                f"Config not found for kernel '{self._kernel_name}': "
                f"config_key '{config_key}' not found for platform '{platform}'. "
                f"Available config_keys: {avail_keys or '(none)'}"
            )

        return config

    def get_platforms(self) -> list[str]:
        return sorted(self._configs.keys())

    def get_config_keys(self, platform: str) -> list[str]:
        platform_dict = self._configs.get(platform.lower())
        if platform_dict is None:
            return []
        return sorted(platform_dict.keys())

    def to_dict(self) -> dict[str, Any]:
        result: dict[str, Any] = {}

        for platform, config_keys_dict in self._configs.items():
            result[platform] = {}

            for config_key, config in config_keys_dict.items():
                # Convert helion.Config to dict using to_json() + json.loads()
                import json

                result[platform][config_key] = json.loads(config.to_json())

        return result

    @classmethod
    def from_dict(cls, kernel_name: str, data: dict[str, Any]) -> "ConfigSet":
        config_set = cls(kernel_name)
        count = 0

        for platform, platform_data in data.items():
            if platform not in config_set._configs:
                config_set._configs[platform] = {}

            for config_key, config_data in platform_data.items():
                config = helion.Config(**config_data)
                config_set._configs[platform][config_key] = config
                count += 1

        if count > 0:
            logger.debug(
                "Loaded %d configs for kernel '%s'",
                count,
                kernel_name,
            )

        return config_set

_ConfigDict class-attribute instance-attribute

_ConfigDict = dict[str, dict[str, 'helion.Config']]

_configs instance-attribute

_configs: _ConfigDict = {}

_kernel_name instance-attribute

_kernel_name = kernel_name

kernel_name property

kernel_name: str

__init__

__init__(kernel_name: str)
Source code in vllm/kernels/helion/config_manager.py
def __init__(self, kernel_name: str):
    self._kernel_name = kernel_name
    self._configs: ConfigSet._ConfigDict = {}

from_dict classmethod

from_dict(
    kernel_name: str, data: dict[str, Any]
) -> ConfigSet
Source code in vllm/kernels/helion/config_manager.py
@classmethod
def from_dict(cls, kernel_name: str, data: dict[str, Any]) -> "ConfigSet":
    config_set = cls(kernel_name)
    count = 0

    for platform, platform_data in data.items():
        if platform not in config_set._configs:
            config_set._configs[platform] = {}

        for config_key, config_data in platform_data.items():
            config = helion.Config(**config_data)
            config_set._configs[platform][config_key] = config
            count += 1

    if count > 0:
        logger.debug(
            "Loaded %d configs for kernel '%s'",
            count,
            kernel_name,
        )

    return config_set

get_config

get_config(platform: str, config_key: str) -> Config
Source code in vllm/kernels/helion/config_manager.py
def get_config(self, platform: str, config_key: str) -> helion.Config:
    platform_dict = self._configs.get(platform)
    if platform_dict is None:
        avail_platforms = self.get_platforms()
        raise KeyError(
            f"Config not found for kernel '{self._kernel_name}': "
            f"platform '{platform}' not found. "
            f"Available platforms: {avail_platforms or '(none)'}"
        )

    config = platform_dict.get(config_key)
    if config is None:
        avail_keys = self.get_config_keys(platform)
        raise KeyError(
            f"Config not found for kernel '{self._kernel_name}': "
            f"config_key '{config_key}' not found for platform '{platform}'. "
            f"Available config_keys: {avail_keys or '(none)'}"
        )

    return config

get_config_keys

get_config_keys(platform: str) -> list[str]
Source code in vllm/kernels/helion/config_manager.py
def get_config_keys(self, platform: str) -> list[str]:
    platform_dict = self._configs.get(platform.lower())
    if platform_dict is None:
        return []
    return sorted(platform_dict.keys())

get_platforms

get_platforms() -> list[str]
Source code in vllm/kernels/helion/config_manager.py
def get_platforms(self) -> list[str]:
    return sorted(self._configs.keys())

to_dict

to_dict() -> dict[str, Any]
Source code in vllm/kernels/helion/config_manager.py
def to_dict(self) -> dict[str, Any]:
    result: dict[str, Any] = {}

    for platform, config_keys_dict in self._configs.items():
        result[platform] = {}

        for config_key, config in config_keys_dict.items():
            # Convert helion.Config to dict using to_json() + json.loads()
            import json

            result[platform][config_key] = json.loads(config.to_json())

    return result

ConfiguredHelionKernel

A configured Helion kernel bound to a specific platform.

Source code in vllm/kernels/helion/register.py
class ConfiguredHelionKernel:
    """A configured Helion kernel bound to a specific platform."""

    def __init__(
        self,
        op_name: str,
        config_picker: Callable[[tuple[Any, ...], list[str]], str | None] | None,
        raw_kernel_func: Callable,
        helion_settings: "helion.Settings | None" = None,
    ):
        self.op_name = op_name
        self.config_picker = config_picker
        self.raw_kernel_func = raw_kernel_func
        self.helion_settings = helion_settings
        self._decorated_kernel = self._create_decorated_kernel()

    def __call__(self, *args, **kwargs):
        return self._decorated_kernel(*args, **kwargs)

    def _create_key_computer(self):
        """
        Create a key computer function derived from the config picker.

        The returned function receives kernel arguments unpacked (*args) to match
        Helion's key signature (called as self._key_fn(*args)).
        """
        if self.config_picker is None:
            raise RuntimeError(
                f"No config picker registered for kernel '{self.op_name}'. "
                f"Use @{self.op_name}.register_config_picker to register one."
            )

        # After None check, config_picker is guaranteed to be non-None
        assert self.config_picker is not None

        def key_computer(*args):
            config_keys = list(self.configs.keys())
            # Cast is safe because we checked for None above
            config_picker = cast(
                Callable[[tuple[Any, ...], list[str]], str | None], self.config_picker
            )
            selected_key = config_picker(args, config_keys)
            if selected_key:
                return selected_key
            return "default" if "default" in self.configs else None

        return key_computer

    def _create_config_selector(self, key_computer):
        def config_selector(args):
            # args is a tuple; key_computer expects unpacked args
            selected_config_key = key_computer(*args)

            if selected_config_key is None:
                raise ValueError(
                    f"Config picker returned None for kernel '{self.op_name}' "
                    f"with available config keys: {list(self.configs.keys())}"
                )

            if selected_config_key not in self.configs:
                raise ValueError(
                    f"Config picker returned invalid config key "
                    f"'{selected_config_key}' for kernel '{self.op_name}'. "
                    f"Available keys: {list(self.configs.keys())}"
                )

            return self.configs[selected_config_key]

        return config_selector

    def _load_platform_configs(self) -> None:
        from vllm.kernels.helion.config_manager import ConfigManager
        from vllm.kernels.helion.utils import get_canonical_gpu_name

        self.platform = get_canonical_gpu_name()
        config_manager = ConfigManager.get_instance()
        self.configs = config_manager.get_platform_configs(self.op_name, self.platform)

        if not self.configs:
            raise ValueError(
                f"No configs available for kernel '{self.op_name}' "
                f"on platform '{self.platform}'"
            )

    def _create_decorated_kernel(self) -> Callable[..., Any]:
        self._load_platform_configs()

        key_computer = self._create_key_computer()
        config_selector = self._create_config_selector(key_computer)

        kernel_kwargs = {}
        if self.helion_settings:
            kernel_kwargs.update(self.helion_settings.to_dict())

        # Set static_shapes=False by default if user didn't explicitly set it to True
        # This is needed for dynamic batch sizes and sequence lengths in vLLM
        if kernel_kwargs.get("static_shapes") is not True:
            kernel_kwargs["static_shapes"] = False

        kernel_kwargs["autotuner_fn"] = lambda _, args: PresetConfigSearch(
            args, config_selector
        )
        kernel_kwargs["key"] = key_computer

        logger.debug(
            "Creating decorated kernel %s with custom autotuner on platform %s",
            self.op_name,
            self.platform,
        )
        return helion.kernel(**kernel_kwargs)(self.raw_kernel_func)

_decorated_kernel instance-attribute

_decorated_kernel = _create_decorated_kernel()

config_picker instance-attribute

config_picker = config_picker

helion_settings instance-attribute

helion_settings = helion_settings

op_name instance-attribute

op_name = op_name

raw_kernel_func instance-attribute

raw_kernel_func = raw_kernel_func

__call__

__call__(*args, **kwargs)
Source code in vllm/kernels/helion/register.py
def __call__(self, *args, **kwargs):
    return self._decorated_kernel(*args, **kwargs)

__init__

__init__(
    op_name: str,
    config_picker: Callable[
        [tuple[Any, ...], list[str]], str | None
    ]
    | None,
    raw_kernel_func: Callable,
    helion_settings: Settings | None = None,
)
Source code in vllm/kernels/helion/register.py
def __init__(
    self,
    op_name: str,
    config_picker: Callable[[tuple[Any, ...], list[str]], str | None] | None,
    raw_kernel_func: Callable,
    helion_settings: "helion.Settings | None" = None,
):
    self.op_name = op_name
    self.config_picker = config_picker
    self.raw_kernel_func = raw_kernel_func
    self.helion_settings = helion_settings
    self._decorated_kernel = self._create_decorated_kernel()

_create_config_selector

_create_config_selector(key_computer)
Source code in vllm/kernels/helion/register.py
def _create_config_selector(self, key_computer):
    def config_selector(args):
        # args is a tuple; key_computer expects unpacked args
        selected_config_key = key_computer(*args)

        if selected_config_key is None:
            raise ValueError(
                f"Config picker returned None for kernel '{self.op_name}' "
                f"with available config keys: {list(self.configs.keys())}"
            )

        if selected_config_key not in self.configs:
            raise ValueError(
                f"Config picker returned invalid config key "
                f"'{selected_config_key}' for kernel '{self.op_name}'. "
                f"Available keys: {list(self.configs.keys())}"
            )

        return self.configs[selected_config_key]

    return config_selector

_create_decorated_kernel

_create_decorated_kernel() -> Callable[..., Any]
Source code in vllm/kernels/helion/register.py
def _create_decorated_kernel(self) -> Callable[..., Any]:
    self._load_platform_configs()

    key_computer = self._create_key_computer()
    config_selector = self._create_config_selector(key_computer)

    kernel_kwargs = {}
    if self.helion_settings:
        kernel_kwargs.update(self.helion_settings.to_dict())

    # Set static_shapes=False by default if user didn't explicitly set it to True
    # This is needed for dynamic batch sizes and sequence lengths in vLLM
    if kernel_kwargs.get("static_shapes") is not True:
        kernel_kwargs["static_shapes"] = False

    kernel_kwargs["autotuner_fn"] = lambda _, args: PresetConfigSearch(
        args, config_selector
    )
    kernel_kwargs["key"] = key_computer

    logger.debug(
        "Creating decorated kernel %s with custom autotuner on platform %s",
        self.op_name,
        self.platform,
    )
    return helion.kernel(**kernel_kwargs)(self.raw_kernel_func)

_create_key_computer

_create_key_computer()

Create a key computer function derived from the config picker.

The returned function receives kernel arguments unpacked (args) to match Helion's key signature (called as self._key_fn(args)).

Source code in vllm/kernels/helion/register.py
def _create_key_computer(self):
    """
    Create a key computer function derived from the config picker.

    The returned function receives kernel arguments unpacked (*args) to match
    Helion's key signature (called as self._key_fn(*args)).
    """
    if self.config_picker is None:
        raise RuntimeError(
            f"No config picker registered for kernel '{self.op_name}'. "
            f"Use @{self.op_name}.register_config_picker to register one."
        )

    # After None check, config_picker is guaranteed to be non-None
    assert self.config_picker is not None

    def key_computer(*args):
        config_keys = list(self.configs.keys())
        # Cast is safe because we checked for None above
        config_picker = cast(
            Callable[[tuple[Any, ...], list[str]], str | None], self.config_picker
        )
        selected_key = config_picker(args, config_keys)
        if selected_key:
            return selected_key
        return "default" if "default" in self.configs else None

    return key_computer

_load_platform_configs

_load_platform_configs() -> None
Source code in vllm/kernels/helion/register.py
def _load_platform_configs(self) -> None:
    from vllm.kernels.helion.config_manager import ConfigManager
    from vllm.kernels.helion.utils import get_canonical_gpu_name

    self.platform = get_canonical_gpu_name()
    config_manager = ConfigManager.get_instance()
    self.configs = config_manager.get_platform_configs(self.op_name, self.platform)

    if not self.configs:
        raise ValueError(
            f"No configs available for kernel '{self.op_name}' "
            f"on platform '{self.platform}'"
        )

HelionKernelWrapper

Wrapper for Helion kernels that creates config-specific PyTorch custom ops.

Source code in vllm/kernels/helion/register.py
class HelionKernelWrapper:
    """Wrapper for Helion kernels that creates config-specific PyTorch custom ops."""

    def __init__(
        self,
        raw_kernel_func: Callable,
        op_name: str,
        fake_impl: Callable,
        helion_settings: "helion.Settings | None" = None,
    ):
        # Validate helion_settings doesn't conflict with our custom autotuner
        validate_helion_settings(helion_settings, op_name)

        self.raw_kernel_func = raw_kernel_func
        self.op_name = op_name
        self._fake_impl = fake_impl
        self.helion_settings = helion_settings
        self._config_picker: (
            Callable[[tuple[Any, ...], list[str]], str | None] | None
        ) = None

    def __call__(self, *args, **kwargs):
        configured_op = self.get_configured_op()
        return configured_op(*args, **kwargs)

    def register_config_picker(
        self, picker_func: Callable[[tuple[Any, ...], list[str]], str | None]
    ) -> Callable[[tuple[Any, ...], list[str]], str | None]:
        self._config_picker = picker_func
        return picker_func

    def get_configured_op(self) -> Any:
        assert self._config_picker is not None, (
            f"No config picker registered for kernel '{self.op_name}'. "
            f"Use @{self.op_name}.register_config_picker to register one."
        )

        if hasattr(torch.ops.vllm_helion, self.op_name):
            logger.debug("Op vllm_helion::%s already registered", self.op_name)
            return getattr(torch.ops.vllm_helion, self.op_name)

        configured_kernel = ConfiguredHelionKernel(
            op_name=self.op_name,
            config_picker=self._config_picker,
            raw_kernel_func=self.raw_kernel_func,
            helion_settings=self.helion_settings,
        )

        logger.info("Registering op: vllm_helion::%s", self.op_name)
        direct_register_custom_op(
            op_name=self.op_name,
            op_func=configured_kernel._decorated_kernel,  # Register decorated kernel
            # TODO(gmagogsfm): Implement automatic mutation/aliasing detection
            # for Helion kernels.
            mutates_args=None,
            fake_impl=self._fake_impl,
            target_lib=vllm_helion_lib,
        )
        return getattr(torch.ops.vllm_helion, self.op_name)

_config_picker instance-attribute

_config_picker: (
    Callable[[tuple[Any, ...], list[str]], str | None]
    | None
) = None

_fake_impl instance-attribute

_fake_impl = fake_impl

helion_settings instance-attribute

helion_settings = helion_settings

op_name instance-attribute

op_name = op_name

raw_kernel_func instance-attribute

raw_kernel_func = raw_kernel_func

__call__

__call__(*args, **kwargs)
Source code in vllm/kernels/helion/register.py
def __call__(self, *args, **kwargs):
    configured_op = self.get_configured_op()
    return configured_op(*args, **kwargs)

__init__

__init__(
    raw_kernel_func: Callable,
    op_name: str,
    fake_impl: Callable,
    helion_settings: Settings | None = None,
)
Source code in vllm/kernels/helion/register.py
def __init__(
    self,
    raw_kernel_func: Callable,
    op_name: str,
    fake_impl: Callable,
    helion_settings: "helion.Settings | None" = None,
):
    # Validate helion_settings doesn't conflict with our custom autotuner
    validate_helion_settings(helion_settings, op_name)

    self.raw_kernel_func = raw_kernel_func
    self.op_name = op_name
    self._fake_impl = fake_impl
    self.helion_settings = helion_settings
    self._config_picker: (
        Callable[[tuple[Any, ...], list[str]], str | None] | None
    ) = None

get_configured_op

get_configured_op() -> Any
Source code in vllm/kernels/helion/register.py
def get_configured_op(self) -> Any:
    assert self._config_picker is not None, (
        f"No config picker registered for kernel '{self.op_name}'. "
        f"Use @{self.op_name}.register_config_picker to register one."
    )

    if hasattr(torch.ops.vllm_helion, self.op_name):
        logger.debug("Op vllm_helion::%s already registered", self.op_name)
        return getattr(torch.ops.vllm_helion, self.op_name)

    configured_kernel = ConfiguredHelionKernel(
        op_name=self.op_name,
        config_picker=self._config_picker,
        raw_kernel_func=self.raw_kernel_func,
        helion_settings=self.helion_settings,
    )

    logger.info("Registering op: vllm_helion::%s", self.op_name)
    direct_register_custom_op(
        op_name=self.op_name,
        op_func=configured_kernel._decorated_kernel,  # Register decorated kernel
        # TODO(gmagogsfm): Implement automatic mutation/aliasing detection
        # for Helion kernels.
        mutates_args=None,
        fake_impl=self._fake_impl,
        target_lib=vllm_helion_lib,
    )
    return getattr(torch.ops.vllm_helion, self.op_name)

register_config_picker

register_config_picker(
    picker_func: Callable[
        [tuple[Any, ...], list[str]], str | None
    ],
) -> Callable[[tuple[Any, ...], list[str]], str | None]
Source code in vllm/kernels/helion/register.py
def register_config_picker(
    self, picker_func: Callable[[tuple[Any, ...], list[str]], str | None]
) -> Callable[[tuple[Any, ...], list[str]], str | None]:
    self._config_picker = picker_func
    return picker_func

canonicalize_gpu_name

canonicalize_gpu_name(name: str) -> str

Canonicalize GPU name for use as a platform identifier.

Converts to lowercase and replaces spaces and hyphens with underscores. e.g., "NVIDIA A100-SXM4-80GB" -> "nvidia_a100_sxm4_80gb"

Raises ValueError if name is empty.

Source code in vllm/kernels/helion/utils.py
def canonicalize_gpu_name(name: str) -> str:
    """
    Canonicalize GPU name for use as a platform identifier.

    Converts to lowercase and replaces spaces and hyphens with underscores.
    e.g., "NVIDIA A100-SXM4-80GB" -> "nvidia_a100_sxm4_80gb"

    Raises ValueError if name is empty.
    """
    if not name or not name.strip():
        raise ValueError("GPU name cannot be empty")
    name = name.lower()
    name = name.replace(" ", "_")
    name = name.replace("-", "_")
    return name

get_canonical_gpu_name

get_canonical_gpu_name(device_id: int | None = None) -> str
Source code in vllm/kernels/helion/utils.py
def get_canonical_gpu_name(device_id: int | None = None) -> str:
    return canonicalize_gpu_name(get_gpu_name(device_id))

get_kernel_by_name

get_kernel_by_name(
    kernel_name: str,
) -> HelionKernelWrapper | None
Source code in vllm/kernels/helion/register.py
def get_kernel_by_name(kernel_name: str) -> HelionKernelWrapper | None:
    return _REGISTERED_KERNELS.get(kernel_name)

get_registered_kernels

get_registered_kernels() -> dict[str, HelionKernelWrapper]
Source code in vllm/kernels/helion/register.py
def get_registered_kernels() -> dict[str, HelionKernelWrapper]:
    return _REGISTERED_KERNELS.copy()

register_kernel

register_kernel(
    op_name_or_func: Callable,
    *,
    fake_impl: Callable | None = None,
    helion_settings: Settings | None = None,
) -> HelionKernelWrapper
register_kernel(
    op_name_or_func: str | None = None,
    *,
    fake_impl: Callable | None = None,
    helion_settings: Settings | None = None,
) -> Callable[[Callable], HelionKernelWrapper]
register_kernel(
    op_name_or_func: str | Callable | None = None,
    *,
    fake_impl: Callable | None = None,
    helion_settings: Settings | None = None,
) -> (
    HelionKernelWrapper
    | Callable[[Callable], HelionKernelWrapper]
)

Decorator to register a Helion kernel function as a HelionKernelWrapper.

Wraps the raw kernel function in a HelionKernelWrapper and registers it in the global kernel registry. Auto-generates fake_impl if not provided.

Source code in vllm/kernels/helion/register.py
def register_kernel(
    op_name_or_func: str | Callable | None = None,
    *,
    fake_impl: Callable | None = None,
    helion_settings: "helion.Settings | None" = None,
) -> HelionKernelWrapper | Callable[[Callable], HelionKernelWrapper]:
    """
    Decorator to register a Helion kernel function as a HelionKernelWrapper.

    Wraps the raw kernel function in a HelionKernelWrapper and registers it
    in the global kernel registry. Auto-generates fake_impl if not provided.
    """

    def decorator(kernel_func: Callable) -> HelionKernelWrapper:
        op_name = op_name_or_func if isinstance(op_name_or_func, str) else None
        final_op_name = op_name if op_name else kernel_func.__name__

        if final_op_name in _REGISTERED_KERNELS:
            raise ValueError(
                f"Helion kernel '{final_op_name}' is already registered. "
                f"Use a different op_name or check for duplicate registrations."
            )

        final_fake_impl = fake_impl
        if final_fake_impl is None:
            final_fake_impl = infer_fake_impl(kernel_func, helion_settings)
            logger.debug(
                "Auto-generated fake_impl for Helion kernel '%s'",
                kernel_func.__name__,
            )

        kernel_wrapper = HelionKernelWrapper(
            raw_kernel_func=kernel_func,
            op_name=final_op_name,
            fake_impl=final_fake_impl,
            helion_settings=helion_settings,
        )

        _REGISTERED_KERNELS[final_op_name] = kernel_wrapper

        logger.info(
            "Registered Helion kernel '%s' as HelionKernelWrapper",
            kernel_func.__name__,
        )

        return kernel_wrapper

    if callable(op_name_or_func) and not isinstance(op_name_or_func, str):
        # Bare decorator usage: @register_kernel
        return decorator(op_name_or_func)
    else:
        # Decorator with arguments: @register_kernel(...)
        return decorator