hanzo-kernel 0.2.19

Hanzo's first-party GPU kernel DSL: one Rust source, lowered to CUDA/ROCm/Vulkan/Metal.
[package]
name = "hanzo-kernel"
version = "0.2.19"
edition = "2021"
description = "Hanzo's first-party GPU kernel DSL: one Rust source, lowered to CUDA/ROCm/Vulkan/Metal."
license = "BSD-3-Clause"
repository = "https://github.com/hanzoai/ml"
documentation = "https://docs.rs/hanzo-kernel"
readme = "README.md"
keywords = ["gpu", "kernel", "cuda", "vulkan", "metal"]
categories = ["hardware-support", "science"]

[dependencies]
# CubeCL is the lowering engine (the value); hanzo-kernel is the namespace (the place).
# Kernel source only ever names `hanzo_kernel::*` -- `cubecl` appears nowhere but this manifest.
cubecl = { version = "0.10", default-features = false }
hanzo-kernel-macros = { path = "../hanzo-kernel-macros", version = "0.1.1" }
half = "2"
# The ROCm backend deps our own published fork of cubecl-hip rather than the cubecl facade's `hip`
# feature: upstream cubecl-hip -> cubecl-hip-sys can't build on ROCm >= 7.13 (unknown-newer HIP patch),
# and a crates.io consumer can't inject the fix via `[patch.crates-io]`. `hanzo-cubecl-hip` (fork of
# cubecl-hip 0.10.0) pulls `hanzo-cubecl-hip-sys` (the build-fixed fork) and is imported as
# `hanzo_cubecl_hip`. It resolves the SAME cubecl-core 0.10 as the facade, so `HipRuntime` is the
# runtime the DSL dispatches through. See hanzo-kernel/forks/.
hanzo-cubecl-hip = { version = "0.10", optional = true }

[features]
default = ["cpu"]
cpu = ["cubecl/cpu"]
vulkan = ["cubecl/wgpu", "cubecl/vulkan"]
spirv-dump = ["cubecl/spirv-dump"]
metal = ["cubecl/wgpu", "cubecl/metal"]
cuda = ["cubecl/cuda"]
# `cubecl/std` is required: cubecl-hip's server uses cubecl-runtime's `MultiStream`, which lives
# behind the `multi_threading` cfg = `all(feature="std", not(wasm))`. Without it the ROCm backend
# fails to compile (MultiStream unresolved). The HIP runtime itself comes from `hanzo-cubecl-hip`.
rocm = ["dep:hanzo-cubecl-hip", "cubecl/std"]

[[bin]]
name = "matvec-check"
path = "src/main.rs"

[[bin]]
name = "dp4a-probe"
path = "src/dp4a_probe.rs"
required-features = ["vulkan"]