use super::DecoderExecution;
use crate::engine::{Array, DecoderCache, Result, Stream, dense::swiglu::DenseSwiGluModel};
mod routed;
impl DecoderExecution for DenseSwiGluModel {
fn prefers_packed_decode(&self, stream: &Stream) -> bool {
stream.config().batch.dense_decode.packed()
}
fn new_cache(&self, stream: &Stream) -> Result<DecoderCache> {
self.new_cache(stream)
}
fn forward_decode(
&self,
token_ids: &Array,
cache: &mut DecoderCache,
position: i32,
stream: &Stream,
) -> Result<Array> {
self.forward_decode(token_ids, cache, position, stream)
}
fn forward_packed_decode(
&self,
token_ids: &Array,
caches: &mut [&mut DecoderCache],
positions: &[i32],
stream: &Stream,
) -> Result<Array> {
self.forward_packed_decode(token_ids, caches, positions, stream)
}
fn forward_prefill(
&self,
token_ids: &Array,
cache: &mut DecoderCache,
position: i32,
stream: &Stream,
) -> Result<Array> {
self.forward_prefill(token_ids, cache, position, stream)
}
fn fusion_summary(&self) -> (usize, usize, usize, usize) {
let (attention, gate_up) = self.fusion_summary();
(attention, 0, gate_up, 0)
}
fn expert_fusion_summary(&self) -> String {
"expert gate/up fusion is not applicable to dense feed-forward".into()
}
}