rgmin#

Author:

Rohit Goswami

Overview#

rgmin is the local-minimization crate of the OmniPotentRPC family, beside rgpot; it was xtsci-optimize until the xtensor heritage stopped being true. Algorithms live only in Rust, over eindir ~DifferentiableObjective~s.

C and C++ keep the old xts::optimize names through an hourglass C ABI (rgmin_solver_t / rgmin_minimize) that carries dlpk DLManagedTensorVersioned tensors. include/xts/optimize.hpp is the C++ wrapper; include/xts/xtensor.hpp adapts xt::xarray. There is no second solver implementation in C++.

The C ABI also accepts an eindir_objective_t* through rgmin_minimize_eindir. The caller supplies the eindir_abi_stamp_t, retains ownership of the objective, and gets the same CPU f64 DLPack path. That is how rgpot’s first-member eindir_objective_t embedding reaches the solvers without a callback shim in each consumer.

The production unconstrained local method is limited-memory BFGS with the strong Wolfe conditions (Nocedal and Wright 7.4 and algorithms 3.5–3.6). Hopping chains keep that solver’s pair history on Lbfgs; anneal’s WarmLbfgs is a thin handle around it.

git clone https://github.com/OmniPotentRPC/rgmin.git
cd rgmin
# Build and test on the remote builder, not a laptop.
cargo test --features capi

Tutorials

License#

MIT.