pub fn refresh_experts(
predictive_offload_enabled: bool,
jump_steps: usize,
num_block: usize,
prefill_blocks: usize,
denoise_step: usize,
) -> bool {
if num_block == prefill_blocks {
return true;
}
if !predictive_offload_enabled {
return false;
}
let tau = jump_steps.max(1);
denoise_step.is_multiple_of(tau)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn matches_tide_eval_jump_steps_two() {
for step in 0..8 {
let expect = step % 2 == 0;
assert_eq!(refresh_experts(true, 2, 1, 0, step), expect, "step {step}");
}
}
#[test]
fn prefill_block_always_refreshes() {
assert!(refresh_experts(false, 100, 3, 3, 99));
assert!(!refresh_experts(false, 100, 4, 3, 0));
}
}