[package]
name = "aprender-compute"
version.workspace = true
edition.workspace = true
rust-version = "1.89"
authors.workspace = true
license.workspace = true
description = "High-performance SIMD compute library with GPU support, LLM inference engine, and GGUF model loading (was: trueno)"
repository.workspace = true
readme = "README.md"
keywords = ["simd", "gpu", "wasm", "performance", "vectorization"]
categories = ["algorithms", "mathematics", "science"]
exclude = ["target/", ".profraw", ".profdata", ".vscode/", ".idea/", ".pmat", "proptest-regressions"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--generate-link-to-definition"]
[lints.rust]
unsafe_code = "allow"
[dependencies]
thiserror = "2.0.17"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
rayon = { version = "1.11", optional = true }
wgpu = { version = "27.0", optional = true }
pollster = { version = "0.4", optional = true }
bytemuck = { version = "1.24", features = ["derive"], optional = true }
futures-intrusive = { version = "0.5", optional = true }
wasm-bindgen-futures = { version = "0.4", optional = true }
wasm-bindgen = { version = "0.2", optional = true }
trueno-gpu = { version = "0.31.2", path = "../aprender-gpu", optional = true, package = "aprender-gpu" }
provable-contracts-macros = "0.3"
trueno-gemm-codegen = { version = "0.31.2", path = "../aprender-gemm-codegen", package = "aprender-gemm-codegen" }
tracing = { version = "0.1", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"], optional = true }
tracing-appender = { version = "0.2", optional = true }
dirs = { version = "5.0", optional = true }
crossterm = { version = "0.28", optional = true }
presentar-core = { version = "0.3", optional = true }
dhat = { version = "0.3", optional = true }
trueno-quant = { version = "0.31.2", path = "../aprender-quant", package = "aprender-quant" }
num_cpus = "1.17.0"
anyhow = "1.0.100"
chrono = "0.4"
toml = "0.8"
aprender = { path = "../aprender-core", version = "0.31.2", package = "aprender-core", optional = true, default-features = false }
trueno-graph = { version = "0.1.17", optional = true }
presentar-terminal = { version = "0.3", optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
web-sys = { version = "0.3", optional = true, features = ["console"] }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
hostname = "0.4"
[build-dependencies]
serde = { version = "1", features = ["derive"] }
serde_yaml_ng = "0.10"
[dev-dependencies]
proptest = "1.9"
criterion = { workspace = true }
tokio = { version = "1", features = ["macros", "rt"] }
serde_json = "1.0"
nalgebra = "0.34"
simular = "0.2.0"
regex = "1.11"
trueno-cuda-edge = { version = "0.31.2", path = "../aprender-cuda-edge", package = "aprender-cuda-edge" }
trueno-sparse = { version = "0.31.2", path = "../aprender-sparse", package = "aprender-sparse" }
trueno-solve = { version = "0.31.2", path = "../aprender-solve", package = "aprender-solve" }
ndarray = "0.17.2"
faer = "0.24"
matrixmultiply = "0.3"
[features]
default = []
parallel = ["rayon"]
gpu = ["wgpu", "pollster", "bytemuck", "futures-intrusive"]
gpu-wasm = ["wgpu", "bytemuck", "futures-intrusive", "wasm-bindgen-futures", "wasm-bindgen", "web-sys"]
cuda-monitor = ["trueno-gpu/cuda"]
chaos-basic = []
chaos-network = ["chaos-basic"]
chaos-byzantine = ["chaos-basic"]
chaos-full = ["chaos-network", "chaos-byzantine"]
tracing = ["dep:tracing"]
hardware-detect = ["dep:dirs"]
tui-monitor = ["presentar-core", "presentar-terminal", "crossterm", "trueno-gpu", "dep:tracing", "tracing-subscriber", "tracing-appender", "dep:dirs"]
cuda = ["trueno-gpu/cuda"]
ml-tuner = ["aprender"]
execution-graph = ["trueno-graph"]
presentar-tui = ["presentar-terminal"]
dhat-heap = ["dep:dhat"]
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
debug = true
[lib]
name = "trueno"
path = "src/lib.rs"
[[bench]]
name = "vector_ops"
harness = false
[[bench]]
name = "matrix_ops"
harness = false
[[bench]]
name = "gpu_ops"
path = "benches/gpu_ops/main.rs"
harness = false
required-features = ["gpu"]
[[bench]]
name = "gpu_reduction"
harness = false
required-features = ["gpu"]
[[bench]]
name = "async_gpu_ops"
harness = false
required-features = ["gpu"]
[[bench]]
name = "eigen_ops"
harness = false
[[bench]]
name = "tiling_ops"
harness = false
[[bench]]
name = "gemm_comparison"
harness = false
[[example]]
name = "gpu_batch_demo"
required-features = ["gpu"]
[[example]]
name = "gpu_tiled_reduction"
required-features = ["gpu"]
[[example]]
name = "wgpu_backward_demo"
required-features = ["gpu"]
[[example]]
name = "coop_gemm_bench"
required-features = ["gpu"]
[[example]]
name = "gpu_monitor_demo"
required-features = ["gpu", "tui-monitor"]
[package.metadata.release]
shared-version = true
[[package.metadata.release.pre-release-replacements]]
file = "CHANGELOG.md"
search = "## \\[Unreleased\\]"
replace = "## [{{version}}] - {{date}}"
[profile.test]
opt-level = 1
incremental = true
[profile.dev]
panic = "abort"