use crate::optim::{AdamConfig, AdamWConfig};
use crate::{DeviceParamStore, Gradients, SgdConfig, Tape};
use super::communicator::Communicator;
use super::error::DistributedError;
pub fn step_sgd(
tape: &Tape,
store: &mut DeviceParamStore,
grads: &Gradients,
config: &SgdConfig,
comm: &mut Communicator,
) -> Result<(), DistributedError> {
fandhe_ai_autodiff::distributed::step::step_sgd(store, &tape.0, grads, config, &mut comm.inner)
.map_err(DistributedError::from_step)
}
pub fn step_adam(
tape: &Tape,
store: &mut DeviceParamStore,
grads: &Gradients,
config: &AdamConfig,
comm: &mut Communicator,
) -> Result<(), DistributedError> {
fandhe_ai_autodiff::distributed::step::step_adam(store, &tape.0, grads, config, &mut comm.inner)
.map_err(DistributedError::from_step)
}
pub fn step_adamw(
tape: &Tape,
store: &mut DeviceParamStore,
grads: &Gradients,
config: &AdamWConfig,
comm: &mut Communicator,
) -> Result<(), DistributedError> {
fandhe_ai_autodiff::distributed::step::step_adamw(
store,
&tape.0,
grads,
config,
&mut comm.inner,
)
.map_err(DistributedError::from_step)
}