Files
foxhunt/crates/ml-core/Cargo.toml
jgrusewski b616d024ad fix(dqn): IQN GPU PER weights, staged GPU buffer, CUDA default in all ML crates
Three fixes for GPU PER hot path:

1. IQN quantile loss used empty CPU weights Vec instead of GPU-resident
   weights_tensor_cached — caused CUDA_ERROR_ILLEGAL_ADDRESS from
   uninitialized GPU memory. Now uses cached GPU tensor matching C51
   and standard DQN paths.

2. GpuPrioritized add()/add_batch() replaced with StagedGpuBuffer:
   add() stages on CPU (Vec::push, zero GPU ops), sample() batch-flushes
   staging→GPU in one DMA before sampling. Production path (insert_batch_tensors)
   bypasses staging entirely — GPU→GPU with zero CPU.

3. All 9 ML sub-crates default to cuda feature so `cargo test -p ml-dqn`
   exercises GPU code paths on CUDA workstations. CI service crates use
   default-features=false, unaffected.

Test results: 350 passed (was 343+7 failed), 0 failed, 1 ignored.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 22:31:49 +01:00

68 lines
2.0 KiB
TOML

[package]
name = "ml-core"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
publish.workspace = true
keywords.workspace = true
categories.workspace = true
description = "Shared ML types, traits, and infrastructure for Foxhunt"
[features]
default = ["cuda"]
cuda = ["candle-core/cuda", "candle-core/cudnn", "candle-nn/cuda", "candle-nn/cudnn"]
s3-storage = ["aws-config", "aws-sdk-s3", "aws-types", "aws-credential-types", "urlencoding"]
high-precision = ["rust_decimal/serde-float"]
mimalloc-allocator = ["mimalloc"]
simd = []
gc = []
financial = []
minimal-inference = []
nccl = ["cuda"]
[dependencies]
# Core (needed by types in lib.rs)
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
thiserror.workspace = true
anyhow.workspace = true
chrono.workspace = true
tracing.workspace = true
rust_decimal.workspace = true
async-trait.workspace = true
futures.workspace = true
tokio.workspace = true
once_cell = "1.19"
dashmap = { workspace = true }
rayon.workspace = true
num_cpus = "1.16"
candle-core = { git = "https://github.com/huggingface/candle", rev = "671de1db" }
candle-nn = { git = "https://github.com/huggingface/candle", rev = "671de1db" }
candle-optimisers = { git = "https://github.com/KGrewal1/optimisers" }
common.workspace = true
config.workspace = true
uuid.workspace = true
parking_lot = { version = "0.12", features = ["hardware-lock-elision"] }
ndarray = { workspace = true, features = ["rayon"] }
# Optional
mimalloc = { version = "0.1", optional = true }
aws-config = { version = "1.1", optional = true }
aws-sdk-s3 = { version = "1.14", optional = true }
aws-types = { version = "1.1", optional = true }
aws-credential-types = { version = "1.1", optional = true }
urlencoding = { version = "2.1", optional = true }
[dev-dependencies]
tokio = { workspace = true, features = ["test-util", "macros"] }
tempfile = "3.12"
approx = "0.5"
[lints]
workspace = true