46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
"""
|
|
Tests for Helion kernel availability and basic functionality.
|
|
|
|
This module demonstrates the pattern for testing optional Helion kernels.
|
|
Tests in this directory will be skipped if Helion is not installed.
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from vllm.utils.import_utils import has_helion
|
|
|
|
# Skip entire module if helion is not available
|
|
if not has_helion():
|
|
pytest.skip(
|
|
"Helion is not installed. Install with: pip install vllm[helion]",
|
|
allow_module_level=True,
|
|
)
|
|
|
|
import helion
|
|
import helion.language as hl
|
|
import torch
|
|
|
|
|
|
def test_helion_kernel_compilation_smoke():
|
|
"""Smoke test: compile and run a simple Helion kernel."""
|
|
|
|
@helion.kernel(autotune_effort="none")
|
|
def add_kernel(x: torch.Tensor, y: torch.Tensor) -> torch.Tensor:
|
|
out = torch.empty_like(x)
|
|
for tile in hl.tile(x.size()):
|
|
out[tile] = x[tile] + y[tile]
|
|
return out
|
|
|
|
# Create test tensors
|
|
x = torch.randn(1024, device="cuda", dtype=torch.float32)
|
|
y = torch.randn(1024, device="cuda", dtype=torch.float32)
|
|
|
|
# Run the helion kernel
|
|
result = add_kernel(x, y)
|
|
|
|
# Verify correctness
|
|
expected = x + y
|
|
assert torch.allclose(result, expected), "Helion kernel output mismatch"
|