use crate::{Matrix, Result};
use crate::ml::autograd::{
node::{GradNode, operation::GradNodeOperation},
tape::record_node,
};
use crate::ml::autograd::node::operation::GradNodeRope;
pub(in crate::ml) fn record_rope(
input: &Matrix,
num_heads: usize,
head_dim: usize,
theta_base: f32,
position_offset: u32,
result: &Matrix,
) -> Result<()> {
record_node(GradNode::Operation(GradNodeOperation::Rope(GradNodeRope {
input: input.clone(),
num_heads,
head_dim,
theta_base,
position_offset,
output_id: result.value_id(),
})))
}