Skip to main content

tidu/
lib.rs

1//! AD graph transforms for the tensor4all v2 stack.
2//!
3//! This crate provides two graph-to-graph transforms:
4//! [`differentiate`] for forward linearization (JVP) and [`transpose`] for
5//! reverse linear flow over a linear fragment.
6//! It also provides eager reverse-mode AD helpers: [`record_eager_op`] builds
7//! [`GradNode`] metadata around concrete frontend execution, and
8//! [`backward_dag`] replays recorded nodes through caller-provided
9//! [`BackwardCallbacks`].
10//!
11//! # Examples
12//!
13//! ```ignore
14//! use computegraph::resolve::resolve;
15//! use tidu::{differentiate, transpose};
16//!
17//! let view = resolve(vec![primal_fragment]);
18//! let mut ctx = ();
19//! let linear = differentiate(&view, &[output_key], &[input_key], 1, &mut ctx);
20//! let _transposed = transpose(&linear, &mut ctx);
21//! ```
22
23pub mod backward;
24mod differentiate;
25mod eager_record;
26pub mod eager_transpose;
27pub mod grad_node;
28mod linear_fragment;
29mod transpose;
30
31pub use backward::{backward_dag, topo_sort_grad_dag, BackwardCallbacks};
32pub use differentiate::differentiate;
33pub use eager_record::{
34    derived_output_key, record_eager_op, saved_forward_values, EagerKeySource, EagerOutput,
35    EagerValue,
36};
37pub use eager_transpose::eager_transpose_fragment;
38pub use grad_node::{GradEdge, GradNode};
39pub use linear_fragment::LinearFragment;
40pub use transpose::transpose;