Convert entire ml-ppo crate from CudaSlice<f32> to CudaSlice<half::bf16>: - CudaLinear: weights/bias/grads all bf16, sgemm→cublasGemmEx BF16 - CudaLSTM: 8 weight/grad buffers bf16, sgemm→GemmEx - CudaVec: wraps CudaSlice<half::bf16> - AdamW optimizer: all states bf16 - All 5 CUDA kernels (activation, linear, softmax, lstm, adam) native __nv_bfloat16 - PPO compute_losses: ENABLED (was #[cfg(any())] stub) - PPO update_gpu: ENABLED (was bf16 migration pending stub) - d2d_subrange_bf16 replaces d2d_subrange_f32 - Host boundary: f32↔bf16 conversion only at upload/download Test results: ml-core: 300/300 (100%) ml-dqn: 359/359 (100%) ml-ppo: 167/168 (1 pre-existing action_masking logic bug) ml: 894/895 (1 pre-existing hyperopt bounds index) Total: 1720/1722 passing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
58 lines
1.4 KiB
TOML
58 lines
1.4 KiB
TOML
[package]
|
|
name = "ml-ppo"
|
|
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 = "PPO reinforcement learning for Foxhunt trading"
|
|
|
|
[features]
|
|
default = ["cuda"]
|
|
cuda = ["ml-core/cuda", "cudarc"]
|
|
|
|
[dependencies]
|
|
ml-core.workspace = true
|
|
common.workspace = true
|
|
|
|
# CUDA (direct cudarc — candle eliminated)
|
|
cudarc = { version = "0.19", optional = true, default-features = false, features = ["driver", "cublas", "dynamic-linking", "std", "cuda-version-from-build-system", "f16"] }
|
|
|
|
# BF16 support
|
|
half.workspace = true
|
|
|
|
# Serialization
|
|
serde = { workspace = true, features = ["derive"] }
|
|
serde_json.workspace = true
|
|
|
|
# Core utilities
|
|
thiserror.workspace = true
|
|
anyhow.workspace = true
|
|
tracing.workspace = true
|
|
rand.workspace = true
|
|
rand_distr.workspace = true
|
|
rust_decimal.workspace = true
|
|
|
|
# CUDA helpers
|
|
fastrand = "2"
|
|
|
|
# Concurrency
|
|
parking_lot = { version = "0.12", features = ["hardware-lock-elision"] }
|
|
|
|
# Numerics
|
|
ndarray = { workspace = true, features = ["rayon"] }
|
|
statrs.workspace = true
|
|
|
|
[dev-dependencies]
|
|
tokio = { workspace = true, features = ["test-util", "macros"] }
|
|
approx.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|