[package]
edition = "2024"
name = "ruda-kernel"
version = "0.1.4"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Ruda Rust kernel DSL and device tensor operations."
readme = "README.md"
license-file = "LICENSE"
repository = "https://github.com/shuqi2077/RUDA"
[features]
default = ["frontend-default"]
device-tensor = [
"library",
"ruda-core/tensor-host-data",
"ruda-core/tensor-elements-flex32",
]
device-tensor-autotune-checks = [
"device-tensor",
"ruda/runtime-autotune-checks",
]
device-tensor-dequantize = [
"device-tensor",
"quantization-kernels",
]
device-tensor-quantize = [
"device-tensor",
"quantization-kernels",
]
device-tensor-tracing = [
"device-tensor",
"dep:tracing",
]
extended = ["heavy"]
frontend = [
"ruda-kernel-macros/kernel-ir",
"dep:ruda-core",
"ruda-core/ir",
"ruda-core/ir-serde",
"ruda-core/tensor",
"dep:ruda",
"ruda/runtime",
"dep:bitflags",
"dep:bytemuck",
"dep:derive-new",
"dep:derive_more",
"dep:enumset",
"dep:float-ord",
"dep:half",
"dep:hashbrown",
"dep:log",
"dep:num-traits",
"dep:paste",
"dep:serde",
"dep:serde_json",
"dep:variadics_please",
"ruda-core/argument-layout",
]
frontend-default = [
"frontend",
"ruda/runtime-default",
"ruda-core/ir-default",
]
frontend-std = [
"frontend",
"ruda/runtime-std",
"ruda-core/ir-std",
]
frontend-template = ["frontend"]
frontend-tests = [
"frontend-std",
"dep:tempfile",
"test-log/trace",
"test-log/log",
]
frontend-tracing = [
"frontend",
"dep:tracing",
"ruda/runtime-tracing",
"ruda-core/tracing",
]
full = ["extended"]
heavy = []
kernel-ir = [
"frontend",
"library",
"dep:ruda-core",
"dep:half",
]
library = [
"frontend",
"dep:spin",
"ruda-core/hash",
]
library-tests = [
"library",
"test-log/trace",
]
library-tracing = [
"library",
"frontend-tracing",
]
lowering-cpp = [
"frontend",
"dep:ruda-compiler",
"ruda-compiler/cpp",
]
lowering-metal = [
"lowering-cpp",
"ruda-compiler/cpp-metal",
]
lowering-mlir = [
"frontend",
"dep:ruda-compiler",
"ruda-compiler/optimizer-std",
]
lowering-spirv = [
"frontend-default",
"dep:ruda-compiler",
"ruda-compiler/spirv",
]
lowering-wgsl = [
"frontend",
"dep:ruda-compiler",
"ruda-compiler/wgsl",
]
quantization = [
"dep:ruda-core",
"ruda-core/fp8",
"dep:half",
"dep:serde",
]
quantization-kernels = [
"quantization",
"frontend",
"library",
]
source-template = [
"frontend",
"dep:text_placeholder",
]
std = [
"ruda?/runtime-std",
"ruda-core?/ir-std",
]
[lib]
name = "ruda_kernel"
path = "src/lib.rs"
[[test]]
name = "frontend"
path = "tests/frontend/mod.rs"
required-features = ["frontend"]
[[test]]
name = "quantization"
path = "tests/quantization/lib.rs"
required-features = ["quantization-kernels"]
[[test]]
name = "tiling"
path = "tests/tiling/lib.rs"
required-features = ["kernel-ir"]
[dependencies.bitflags]
version = "2.9.1"
features = ["serde"]
optional = true
[dependencies.bytemuck]
version = "1.16.1"
optional = true
[dependencies.derive-new]
version = "0.7.0"
optional = true
default-features = false
[dependencies.derive_more]
version = "2"
features = [
"not",
"add",
"mul",
"add_assign",
"mul_assign",
"display",
"debug",
]
optional = true
default-features = false
[dependencies.enumset]
version = "1.1.12"
optional = true
default-features = false
[dependencies.float-ord]
version = "0.3"
optional = true
[dependencies.half]
version = "=2.7.1"
features = [
"alloc",
"num-traits",
"serde",
"bytemuck",
]
optional = true
default-features = false
[dependencies.hashbrown]
version = "0.16"
optional = true
[dependencies.log]
version = "^0.4.22"
optional = true
default-features = false
[dependencies.num-traits]
version = "0.2.19"
features = ["libm"]
optional = true
default-features = false
[dependencies.paste]
version = "1"
optional = true
[dependencies.ruda]
version = "0.1.5"
optional = true
default-features = false
[dependencies.ruda-compiler]
version = "0.1.3"
optional = true
default-features = false
[dependencies.ruda-core]
version = "0.1.3"
optional = true
default-features = false
[dependencies.ruda-kernel-macros]
version = "0.1.3"
default-features = false
[dependencies.serde]
version = "1.0.204"
features = [
"derive",
"alloc",
]
optional = true
default-features = false
[dependencies.serde_json]
version = "1.0.119"
optional = true
default-features = false
[dependencies.spin]
version = "0.10.0"
features = [
"mutex",
"spin_mutex",
]
optional = true
[dependencies.tempfile]
version = "3.20"
optional = true
[dependencies.test-log]
version = "^0.2"
optional = true
default-features = false
[dependencies.text_placeholder]
version = "0.5.1"
features = ["struct_context"]
optional = true
[dependencies.tracing]
version = "^0.1.43"
features = ["attributes"]
optional = true
default-features = false
[dependencies.variadics_please]
version = "1"
optional = true
[dev-dependencies.half]
version = "=2.7.1"
[dev-dependencies.pretty_assertions]
version = "1.4"
[dev-dependencies.test-log]
version = "^0.2"
features = ["trace"]
default-features = false
[dev-dependencies.trybuild]
version = "1"
[lints.rust]
unsafe_code = "deny"