[package]
edition = "2024"
rust-version = "1.87"
name = "rlx-runtime"
version = "0.2.2"
authors = [
"Eugene Hauptmann",
"Nataliya Kosmyna",
]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "RLX runtime — feature-gated backends, session API, compile+execute pipeline"
homepage = "https://github.com/MIT-RLX/rlx"
documentation = "https://docs.rs/rlx"
readme = "README.md"
keywords = [
"ml",
"tensor",
"compiler",
"neural-network",
"autodiff",
]
categories = [
"science",
"algorithms",
"compilers",
]
license = "GPL-3.0-only"
repository = "https://github.com/MIT-RLX/rlx"
resolver = "2"
[package.metadata.docs.rs]
features = [
"cpu",
"gpu",
]
rustdoc-args = [
"--cfg",
"docsrs",
]
all-features = false
[features]
ane = []
apple = [
"metal",
"mlx",
"gpu",
]
blas-accelerate = ["cpu"]
blas-mkl = ["cpu"]
blas-openblas = ["cpu"]
cpu = [
"dep:rlx-cpu",
"rlx-cpu/splat",
]
cuda = [
"dep:rlx-cuda",
"rlx-cpu/splat",
]
default = ["cpu"]
directx = []
gpu = [
"dep:rlx-wgpu",
"rlx-wgpu/splat",
]
kernel-trace = []
metal = [
"dep:rlx-metal",
"rlx-cpu/splat",
]
mlx = [
"dep:rlx-mlx",
"rlx-cpu/splat",
]
mock-requests = []
nan-check = []
opengl = []
rocm = [
"dep:rlx-rocm",
"rlx-cpu/splat",
]
tpu = [
"dep:rlx-tpu",
"rlx-cpu/splat",
]
vulkan = ["gpu"]
webgpu = []
[lib]
name = "rlx_runtime"
path = "src/lib.rs"
[[example]]
name = "attn_isolation"
path = "examples/attn_isolation.rs"
[[example]]
name = "bert_block_isolation"
path = "examples/bert_block_isolation.rs"
[[example]]
name = "chain_add_isolation"
path = "examples/chain_add_isolation.rs"
[[example]]
name = "compile_cache_demo"
path = "examples/compile_cache_demo.rs"
[[example]]
name = "control_flow"
path = "examples/control_flow.rs"
[[example]]
name = "cpu_mixed_precision"
path = "examples/cpu_mixed_precision.rs"
[[example]]
name = "custom_backend"
path = "examples/custom_backend.rs"
[[example]]
name = "embed_isolation"
path = "examples/embed_isolation.rs"
[[example]]
name = "grouped_matmul_bench"
path = "examples/grouped_matmul_bench.rs"
[[example]]
name = "icb_integration"
path = "examples/icb_integration.rs"
[[example]]
name = "kv_cache"
path = "examples/kv_cache.rs"
[[example]]
name = "metal_check"
path = "examples/metal_check.rs"
[[example]]
name = "moe_demo"
path = "examples/moe_demo.rs"
[[example]]
name = "mpsgraph_integration"
path = "examples/mpsgraph_integration.rs"
[[example]]
name = "op_bench"
path = "examples/op_bench.rs"
[[example]]
name = "op_coverage"
path = "examples/op_coverage.rs"
[[example]]
name = "parity_harness"
path = "examples/parity_harness.rs"
[[example]]
name = "pipeline_demo"
path = "examples/pipeline_demo.rs"
[[example]]
name = "precision_check"
path = "examples/precision_check.rs"
[[example]]
name = "precision_modes"
path = "examples/precision_modes.rs"
[[example]]
name = "splat_common_splat_session"
path = "examples/splat_common_splat_session.rs"
required-features = ["cpu"]
[[example]]
name = "splat_decomposed_session"
path = "examples/splat_decomposed_session.rs"
required-features = ["cpu"]
[[example]]
name = "splat_render_ply_session"
path = "examples/splat_render_ply_session.rs"
required-features = ["cpu"]
[[example]]
name = "swiglu_parity"
path = "examples/swiglu_parity.rs"
[[test]]
name = "autodiff_attention_backward"
path = "tests/autodiff_attention_backward.rs"
[[test]]
name = "autodiff_attention_backward_gpu"
path = "tests/autodiff_attention_backward_gpu.rs"
[[test]]
name = "autodiff_dequant_grouped_backward"
path = "tests/autodiff_dequant_grouped_backward.rs"
[[test]]
name = "autodiff_dequant_grouped_vmap"
path = "tests/autodiff_dequant_grouped_vmap.rs"
[[test]]
name = "autodiff_mnist_pipeline"
path = "tests/autodiff_mnist_pipeline.rs"
[[test]]
name = "autodiff_training_backward"
path = "tests/autodiff_training_backward.rs"
[[test]]
name = "autodiff_training_backward_gpu"
path = "tests/autodiff_training_backward_gpu.rs"
[[test]]
name = "cpu_binary_bidirectional_broadcast"
path = "tests/cpu_binary_bidirectional_broadcast.rs"
[[test]]
name = "cpu_c64_wirtinger"
path = "tests/cpu_c64_wirtinger.rs"
[[test]]
name = "cpu_complex"
path = "tests/cpu_complex.rs"
[[test]]
name = "cpu_control_flow"
path = "tests/cpu_control_flow.rs"
[[test]]
name = "cpu_custom_op"
path = "tests/cpu_custom_op.rs"
[[test]]
name = "cpu_f64_dense_solve"
path = "tests/cpu_f64_dense_solve.rs"
[[test]]
name = "cpu_fft"
path = "tests/cpu_fft.rs"
[[test]]
name = "cpu_gated_delta_net_parity"
path = "tests/cpu_gated_delta_net_parity.rs"
[[test]]
name = "cpu_grad_finite_difference"
path = "tests/cpu_grad_finite_difference.rs"
[[test]]
name = "cpu_hvp"
path = "tests/cpu_hvp.rs"
[[test]]
name = "cpu_jvp_linalg"
path = "tests/cpu_jvp_linalg.rs"
[[test]]
name = "cpu_linalg"
path = "tests/cpu_linalg.rs"
[[test]]
name = "cpu_linalg_v2"
path = "tests/cpu_linalg_v2.rs"
[[test]]
name = "cpu_linalg_v3"
path = "tests/cpu_linalg_v3.rs"
[[test]]
name = "cpu_linalg_vjp"
path = "tests/cpu_linalg_vjp.rs"
[[test]]
name = "cpu_perf_diag"
path = "tests/cpu_perf_diag.rs"
[[test]]
name = "cpu_selective_scan_parity"
path = "tests/cpu_selective_scan_parity.rs"
[[test]]
name = "cpu_sparse_ops"
path = "tests/cpu_sparse_ops.rs"
[[test]]
name = "cpu_sparse_ops_v2"
path = "tests/cpu_sparse_ops_v2.rs"
[[test]]
name = "cpu_sparse_ops_v3"
path = "tests/cpu_sparse_ops_v3.rs"
[[test]]
name = "cpu_sparse_ops_v4"
path = "tests/cpu_sparse_ops_v4.rs"
[[test]]
name = "cpu_sparse_ops_v5"
path = "tests/cpu_sparse_ops_v5.rs"
[[test]]
name = "cpu_sqrt_grad"
path = "tests/cpu_sqrt_grad.rs"
[[test]]
name = "cpu_sqrt_grad_f64"
path = "tests/cpu_sqrt_grad_f64.rs"
[[test]]
name = "cpu_vmap_linalg"
path = "tests/cpu_vmap_linalg.rs"
[[test]]
name = "cuda_fft"
path = "tests/cuda_fft.rs"
[[test]]
name = "dequant_grouped_matmul_gguf"
path = "tests/dequant_grouped_matmul_gguf.rs"
[[test]]
name = "dequant_matmul_gguf"
path = "tests/dequant_matmul_gguf.rs"
[[test]]
name = "expert_pool_tide"
path = "tests/expert_pool_tide.rs"
[[test]]
name = "gpu_fft_norm"
path = "tests/gpu_fft_norm.rs"
[[test]]
name = "metal_fft"
path = "tests/metal_fft.rs"
[[test]]
name = "metal_sparse_ops"
path = "tests/metal_sparse_ops.rs"
[[test]]
name = "metal_sparse_ops_v2"
path = "tests/metal_sparse_ops_v2.rs"
[[test]]
name = "mlx_compile_lir"
path = "tests/mlx_compile_lir.rs"
[[test]]
name = "mlx_fft"
path = "tests/mlx_fft.rs"
[[test]]
name = "mlx_sparse_ops"
path = "tests/mlx_sparse_ops.rs"
[[test]]
name = "mlx_sparse_ops_v2"
path = "tests/mlx_sparse_ops_v2.rs"
[[test]]
name = "moe_grouped_residency"
path = "tests/moe_grouped_residency.rs"
[[test]]
name = "mps_attention_parity"
path = "tests/mps_attention_parity.rs"
[[test]]
name = "pipeline_schedule"
path = "tests/pipeline_schedule.rs"
[[test]]
name = "splat_autodiff_decomposed_smoke"
path = "tests/splat_autodiff_decomposed_smoke.rs"
[[test]]
name = "splat_autodiff_smoke"
path = "tests/splat_autodiff_smoke.rs"
[[test]]
name = "splat_backend_parity_smoke"
path = "tests/splat_backend_parity_smoke.rs"
[[test]]
name = "splat_backward_parity_smoke"
path = "tests/splat_backward_parity_smoke.rs"
[[test]]
name = "splat_backward_smoke"
path = "tests/splat_backward_smoke.rs"
[[test]]
name = "splat_common"
path = "tests/splat_common.rs"
[[test]]
name = "splat_decomposed_smoke"
path = "tests/splat_decomposed_smoke.rs"
[[test]]
name = "splat_legalize_smoke"
path = "tests/splat_legalize_smoke.rs"
[[test]]
name = "splat_logical_kernel_common_smoke"
path = "tests/splat_logical_kernel_common_smoke.rs"
[[test]]
name = "splat_session_decomposed_smoke"
path = "tests/splat_session_decomposed_smoke.rs"
[[test]]
name = "splat_session_smoke"
path = "tests/splat_session_smoke.rs"
[[test]]
name = "splat_training_backward_smoke"
path = "tests/splat_training_backward_smoke.rs"
[[test]]
name = "tinyconv_graph"
path = "tests/tinyconv_graph.rs"
[[test]]
name = "tpu_compile_cache"
path = "tests/tpu_compile_cache.rs"
[[test]]
name = "tpu_cpu_speed"
path = "tests/tpu_cpu_speed.rs"
[[test]]
name = "tpu_real_model_parity"
path = "tests/tpu_real_model_parity.rs"
[[test]]
name = "typed_io"
path = "tests/typed_io.rs"
[[test]]
name = "wgpu_fft"
path = "tests/wgpu_fft.rs"
[dependencies.half]
version = "2"
[dependencies.rlx-cpu]
version = "0.2.3"
optional = true
[dependencies.rlx-cuda]
version = "0.2.2"
optional = true
[dependencies.rlx-driver]
version = "0.2.1"
[dependencies.rlx-ir]
version = "0.2.2"
features = ["serialize"]
[dependencies.rlx-macros]
version = "0.2.1"
[dependencies.rlx-metal]
version = "0.2.2"
optional = true
[dependencies.rlx-mlx]
version = "0.2.2"
optional = true
[dependencies.rlx-opt]
version = "0.2.2"
[dependencies.rlx-rocm]
version = "0.2.2"
optional = true
[dependencies.rlx-tpu]
version = "0.2.2"
optional = true
[dependencies.rlx-wgpu]
version = "0.2.3"
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dev-dependencies.anyhow]
version = "1"
[dev-dependencies.half]
version = "2"
[dev-dependencies.rlx-autodiff]
version = "0.2.2"
[dev-dependencies.rlx-compile]
version = "0.2.2"
features = ["training"]
[dev-dependencies.rlx-gguf]
version = "0.2.1"
[dev-dependencies.rlx-linalg]
version = "0.2.1"
[dev-dependencies.rlx-sparse]
version = "0.2.1"
features = ["cpu"]
default-features = false
[dev-dependencies.rlx-splat]
version = "0.2.1"
features = [
"test-support",
"io",
]
default-features = false
[lints.clippy]
collapsible_if = "allow"
doc_lazy_continuation = "allow"
doc_overindented_list_items = "allow"
large_enum_variant = "allow"
manual_range_contains = "allow"
missing_safety_doc = "allow"
needless_range_loop = "allow"
should_implement_trait = "allow"
single_range_in_vec_init = "allow"
too_many_arguments = "allow"
type_complexity = "allow"
unnecessary_wraps = "allow"
upper_case_acronyms = "allow"
useless_conversion = "allow"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.rust.unused]
level = "warn"
priority = 0