[package]
edition = "2024"
name = "ruDNN"
version = "0.2.3"
authors = [
"Genna Wingert",
"louisfd <louisfd94@gmail.com>",
]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Neural network operators for Ruda."
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/shuqi2077/RUDA"
[features]
attention-fallback = [
"dep:ruda-core",
"ruda-core/tensor-elements",
"ruda-core/tensor-device-settings",
"dep:num-traits",
]
cann = ["dep:ruda-driver-cann"]
cpu-reference = [
"kernel-ir",
"dep:ruda-test-utils",
"rublas/cpu-reference",
]
ctc = [
"kernel-ir",
"ruda-kernel/device-tensor",
"ruda-core/tensor",
]
default = [
"kernel-ir",
"std",
]
extended = ["heavy"]
full = ["extended"]
grid-sample = ["interpolation"]
heavy = []
interpolation = [
"kernel-ir",
"ruda-kernel/device-tensor",
"ruda-core/tensor",
]
kernel-ir = [
"dep:ruda-core",
"dep:ruda-kernel",
"dep:rublas",
"rublas/kernel-ir",
"dep:bytemuck",
"dep:derive-new",
"dep:enumset",
"dep:half",
"dep:serde",
]
pooling = [
"kernel-ir",
"ruda-kernel/device-tensor",
"ruda-core/tensor",
]
std = [
"kernel-ir",
"ruda-kernel/frontend-std",
"rublas/std",
]
tensor-attention = [
"attention-fallback",
"kernel-ir",
"ruda-kernel/device-tensor",
"rublas/tensor-matmul",
"dep:ruprim",
"ruprim/elementwise",
"ruprim/tensor-reduce",
]
tensor-attention-autotune = [
"tensor-attention",
"rublas/tensor-matmul-autotune",
"ruprim/tensor-reduce-autotune",
]
tensor-convolution = [
"kernel-ir",
"ruda-kernel/device-tensor",
"rublas/tensor-matmul",
"dep:ruprim",
"ruprim/indexing",
"ruprim/tensor-reduce",
]
tensor-convolution-autotune = [
"tensor-convolution",
"rublas/tensor-matmul-autotune",
"ruprim/tensor-reduce-autotune",
]
tensor-gated-delta = [
"kernel-ir",
"ruda-kernel/device-tensor",
"rublas/tensor-matmul",
]
tensor-kda = [
"kernel-ir",
"ruda-kernel/device-tensor",
"rublas/tensor-matmul",
]
tensor-moe = [
"kernel-ir",
"ruda-kernel/device-tensor",
"rublas/tensor-grouped",
]
tensor-nf4-moe = [
"tensor-moe",
"rublas/tensor-nf4",
"dep:ruprim",
"ruprim/elementwise",
]
tensor-normalization = [
"kernel-ir",
"ruda-kernel/device-tensor",
]
tensor-packed-moe = [
"tensor-nf4-moe",
"rublas/tensor-int4",
]
tensor-paged-attention = [
"kernel-ir",
"ruda-kernel/device-tensor",
"ruda-kernel/packed-quantization",
]
[lib]
name = "rudnn"
path = "src/lib.rs"
[[test]]
name = "attention"
path = "tests/attention/lib.rs"
required-features = [
"kernel-ir",
"cpu-reference",
]
[[test]]
name = "flash-training-layout"
path = "src/flash_training/tests.rs"
[[test]]
name = "flash-training-ptx"
path = "tests/flash_training_ptx.rs"
required-features = ["tensor-paged-attention"]
[[test]]
name = "convolution"
path = "tests/convolution/lib.rs"
required-features = [
"kernel-ir",
"cpu-reference",
]
[dependencies.bytemuck]
version = "1.16.1"
optional = true
[dependencies.derive-new]
version = "0.7.0"
optional = true
default-features = false
[dependencies.enumset]
version = "1.1.10"
optional = true
default-features = false
[dependencies.half]
version = "=2.7.1"
features = [
"alloc",
"num-traits",
"serde",
"bytemuck",
]
optional = true
default-features = false
[dependencies.num-traits]
version = "0.2.19"
features = ["libm"]
optional = true
default-features = false
[dependencies.rublas]
version = "0.2.3"
optional = true
default-features = false
[dependencies.ruda-core]
version = "0.1.13"
optional = true
default-features = false
[dependencies.ruda-driver-cann]
version = "0.2.0"
optional = true
[dependencies.ruda-kernel]
version = "0.1.52"
features = ["kernel-ir"]
optional = true
default-features = false
[dependencies.ruda-test-utils]
version = "0.2.0"
optional = true
default-features = false
[dependencies.ruprim]
version = "0.2.0"
optional = true
default-features = false
package = "ruPRIM"
[dependencies.serde]
version = "1.0.204"
features = [
"derive",
"alloc",
]
optional = true
default-features = false
[dev-dependencies.pretty_assertions]
version = "1.4"
[dev-dependencies.trybuild]
version = "1"