Tensor AD Oracles Support Coverage

This file is a checked-in support snapshot derived from the vendored third_party/tensor-ad-oracles subtree. The crate-local replay entrypoint lives under crates/tenferro-linalg/tests/integration/oracle_replay.rs, with helpers under crates/tenferro-linalg/tests/oracle_replay, and is env-gated for local or nightly execution rather than default PR CI.

Summary

  • Total published records: 9585
  • Supported success records: 2090
  • Supported success records with HVP payloads: 1339
  • Expected error records: 2
  • Unsupported success records: 7493

Local Replay

The default test target validates the harness and representative cases without replaying the whole database. Full replay is opt-in:

RUST_TEST_THREADS=1 RUN_ORACLE_REPLAY=1 ORACLE_REPLAY_JOBS=48 \
  cargo test -p tenferro-linalg --features autodiff --test integration \
  oracle_replays_supported_db_cases_when_requested -- --nocapture

ORACLE_REPLAY_JOBS controls record-level parallelism. The harness uses plain OS worker threads instead of an outer Rayon pool because replayed cases execute CPU backend kernels that may use backend-owned Rayon scopes internally.

Crate-Local AD Coverage Outside Replay

The support tables below describe the active env-gated oracle replay adapter snapshot. Some AD manifest entries are also guarded by crate-local finite-difference tests because the public oracle family is not yet replayable.

manifest op coverage type public path test
Einsum extension finite-difference einsum_with(..., "ij,jk->ik", ...) cargo test -p tenferro-einsum --features autodiff --test integration grad_einsum_matmul_real_matches_finite_diff_for_both_inputs
FFT C2C extension finite-difference fft(...).jvp(...) cargo test -p tenferro-fft --features autodiff --test fft_ops fft_c64_jvp_matches_finite_diff
Lu finite-difference grad(sum(l) + sum(u)) cargo test -p tenferro-linalg --features autodiff --test integration lu_qr_sum_grads_match_finite_diff
Qr finite-difference grad(sum(q) + sum(r)) cargo test -p tenferro-linalg --features autodiff --test integration lu_qr_sum_grads_match_finite_diff
SvdVals finite-difference norm(..., ord=2) cargo test -p tenferro-linalg --features autodiff --test integration spectral_norm_jvp_matches_finite_diff_through_values_only_svd
Eigh finite-difference grad(sum(values) + sum(vectors)) cargo test -p tenferro-linalg --features autodiff --test integration full_eigh_sum_grad_matches_finite_diff
EighVals finite-difference eigvalsh cargo test -p tenferro-linalg --features autodiff --test integration eigvalsh_jvp_matches_finite_diff_through_values_only_eigh
EigVals finite-difference eigvals cargo test -p tenferro-linalg --features autodiff --test integration eigvals_jvp_matches_finite_diff

Supported

op family observable sample count
cholesky identity identity 48
cholesky_ex identity identity 48
det identity identity 36
eigh values_vectors_abs eigh_values_vectors_abs 32
full_pivot_lu identity identity 4
inv identity identity 24
inv_ex identity identity 24
lstsq_grad_oriented identity identity 42
lu identity identity 80
matrix_norm identity identity 40
norm identity identity 176
pinv identity identity 72
qr identity identity 36
slogdet identity identity 36
solve identity identity 24
solve_ex identity identity 24
solve_triangular identity identity 432
svd s svd_s 216
svd u_abs svd_u_abs 216
svd uvh_product svd_uvh_product 216
svd vh_abs svd_vh_abs 216
vector_norm identity identity 48

Expected Errors

op family observable sample count
eigh gauge_ill_defined eigh_values_vectors_abs 1
svd gauge_ill_defined svd_uvh_product 1

Unsupported

op family observable sample count reason
radd identity identity 36 tenferro replay does not implement this oracle family yet
rdiv identity identity 36 tenferro replay does not implement this oracle family yet
rmod identity identity 18 tenferro replay does not implement this oracle family yet
rmul identity identity 36 tenferro replay does not implement this oracle family yet
rpow identity identity 22 tenferro replay does not implement this oracle family yet
rsub identity identity 36 tenferro replay does not implement this oracle family yet
abs identity identity 4 tenferro replay does not implement this oracle family yet
acos identity identity 12 tenferro replay does not implement this oracle family yet
acosh identity identity 12 tenferro replay does not implement this oracle family yet
add identity identity 44 tenferro replay does not implement this oracle family yet
amax identity identity 40 tenferro replay does not implement this oracle family yet
amin identity identity 40 tenferro replay does not implement this oracle family yet
angle identity identity 4 tenferro replay does not implement this oracle family yet
asin identity identity 4 tenferro replay does not implement this oracle family yet
asinh identity identity 4 tenferro replay does not implement this oracle family yet
atan identity identity 4 tenferro replay does not implement this oracle family yet
atan2 identity identity 18 tenferro replay does not implement this oracle family yet
atanh identity identity 4 tenferro replay does not implement this oracle family yet
cdouble identity identity 20 tenferro replay does not implement this oracle family yet
ceil identity identity 2 tenferro replay does not implement this oracle family yet
cholesky identity identity 16 tenferro replay currently supports this family only for float64/complex64/complex128
cholesky_ex identity identity 16 tenferro replay currently supports this family only for float64/complex64/complex128
clamp_max identity identity 18 tenferro replay does not implement this oracle family yet
clamp_min identity identity 18 tenferro replay does not implement this oracle family yet
complex identity identity 18 tenferro replay does not implement this oracle family yet
cond identity identity 12 tenferro has no public traced condition-number API to replay this oracle family yet
conj identity identity 12 tenferro replay does not implement this oracle family yet
conj_physical identity identity 4 tenferro replay does not implement this oracle family yet
copysign identity identity 20 tenferro replay does not implement this oracle family yet
cos identity identity 12 tenferro replay does not implement this oracle family yet
cosh identity identity 12 tenferro replay does not implement this oracle family yet
cross identity identity 12 tenferro has no matching public traced linalg API to replay this oracle family yet
deg2rad identity identity 2 tenferro replay does not implement this oracle family yet
diagonal identity identity 60 tenferro replay does not implement this tensor-construction oracle family yet
digamma identity identity 6 tenferro replay does not implement this oracle family yet
div_no_rounding_mode identity identity 36 tenferro replay does not implement this oracle family yet
double identity identity 20 tenferro replay does not implement this oracle family yet
eig values_vectors_abs eig_values_vectors_abs 32 tenferro Eig AD support is values-only; eigenvector observables are unsupported by the manifest
eigvals identity identity 32 tenferro replay does not implement this scalar-output oracle family yet
eigvalsh identity identity 32 tenferro replay does not implement this scalar-output oracle family yet
erf identity identity 2 tenferro replay does not implement this oracle family yet
erfc identity identity 6 tenferro replay does not implement this oracle family yet
erfinv identity identity 2 tenferro replay does not implement this oracle family yet
exp identity identity 12 tenferro replay does not implement this oracle family yet
exp2 identity identity 12 tenferro replay does not implement this oracle family yet
expm1 identity identity 4 tenferro replay does not implement this oracle family yet
fill identity identity 12 tenferro replay does not implement this oracle family yet
float_power identity identity 36 tenferro replay does not implement this oracle family yet
floor identity identity 2 tenferro replay does not implement this oracle family yet
fmax identity identity 18 tenferro replay does not implement this oracle family yet
fmin identity identity 18 tenferro replay does not implement this oracle family yet
frac identity identity 2 tenferro replay does not implement this oracle family yet
frexp identity identity 6 tenferro replay does not implement this oracle family yet
full_pivot_lu identity identity 8 tenferro replay currently supports this family only for square float32/float64/complex64/complex128 inputs
householder_product identity identity 32 tenferro has no matching public traced linalg API to replay this oracle family yet
hypot identity identity 18 tenferro replay does not implement this oracle family yet
i0 identity identity 6 tenferro replay does not implement this oracle family yet
imag identity identity 6 tenferro replay does not implement this oracle family yet
inv identity identity 8 tenferro replay currently supports this family only for float64/complex64/complex128
inv_ex identity identity 8 tenferro replay currently supports this family only for float64/complex64/complex128
ldexp identity identity 36 tenferro replay does not implement this oracle family yet
lgamma identity identity 6 tenferro replay does not implement this oracle family yet
log identity identity 12 tenferro replay does not implement this oracle family yet
log10 identity identity 12 tenferro replay does not implement this oracle family yet
log1p identity identity 4 tenferro replay does not implement this oracle family yet
log2 identity identity 12 tenferro replay does not implement this oracle family yet
logaddexp identity identity 36 tenferro replay does not implement this oracle family yet
logit identity identity 8 tenferro replay does not implement this oracle family yet
lstsq_grad_oriented identity identity 102 tenferro replay currently supports only the real-valued m>=n least-squares subset excluding unsupported driver-specific oracle cases
lu_factor identity identity 80 tenferro lu_factor is a prepared factor carrier whose AD rule is intentionally unsupported
lu_factor_ex identity identity 80 tenferro lu_factor is a prepared factor carrier whose AD rule is intentionally unsupported
lu_solve identity identity 1248 tenferro has no public traced lu_solve replay adapter for this oracle family yet
matrix_norm identity identity 216 tenferro replay currently supports only the rank-2 scalar-output matrix_norm slice accepted by the current NormKind adapter; complex inputs are further restricted to ord=Fro
matrix_power identity identity 72 tenferro has no public traced matrix_power API to replay this oracle family yet
max_binary identity identity 18 tenferro replay does not implement this oracle family yet
maximum identity identity 18 tenferro replay does not implement this oracle family yet
mean identity identity 80 tenferro replay does not implement this oracle family yet
min_binary identity identity 18 tenferro replay does not implement this oracle family yet
minimum identity identity 18 tenferro replay does not implement this oracle family yet
mul identity identity 36 tenferro replay does not implement this oracle family yet
multi_dot identity identity 28 tenferro has no matching public traced linalg API to replay this oracle family yet
mvlgamma_mvlgamma_p_1 identity identity 20 tenferro replay does not implement this oracle family yet
mvlgamma_mvlgamma_p_3 identity identity 20 tenferro replay does not implement this oracle family yet
mvlgamma_mvlgamma_p_5 identity identity 20 tenferro replay does not implement this oracle family yet
nan_to_num identity identity 6 tenferro replay does not implement this oracle family yet
nanmean identity identity 70 tenferro replay does not implement this oracle family yet
nansum identity identity 70 tenferro replay does not implement this oracle family yet
neg identity identity 4 tenferro replay does not implement this oracle family yet
nn_functional_celu identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_elu identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_hardshrink identity identity 12 tenferro replay does not implement this oracle family yet
nn_functional_hardsigmoid identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_hardtanh identity identity 10 tenferro replay does not implement this oracle family yet
nn_functional_logsigmoid identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_mish identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_prelu identity identity 50 tenferro replay does not implement this oracle family yet
nn_functional_relu identity identity 8 tenferro replay does not implement this oracle family yet
nn_functional_relu6 identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_rrelu identity identity 10 tenferro replay does not implement this oracle family yet
nn_functional_selu identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_silu identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_softplus identity identity 6 tenferro replay does not implement this oracle family yet
nn_functional_softshrink identity identity 10 tenferro replay does not implement this oracle family yet
nn_functional_softsign identity identity 12 tenferro replay does not implement this oracle family yet
nn_functional_tanhshrink identity identity 12 tenferro replay does not implement this oracle family yet
nn_functional_threshold identity identity 8 tenferro replay does not implement this oracle family yet
norm identity identity 232 tenferro replay currently supports only the whole-tensor torch.linalg.norm subset expressible by current NormKind AD rules; remaining dim-aware and unsupported ord/rank cases are not replayed yet
pinv identity identity 24 tenferro replay currently supports this family only for float64/complex64/complex128
pinv_hermitian identity identity 32 tenferro has no matching public traced linalg API to replay this oracle family yet
pinv_singular identity identity 192 tenferro replay does not expose the two-input pinv_singular oracle family
polar identity identity 18 tenferro replay does not implement this oracle family yet
polygamma_polygamma_n_0 identity identity 20 tenferro replay does not implement this oracle family yet
polygamma_polygamma_n_1 identity identity 20 tenferro replay does not implement this oracle family yet
polygamma_polygamma_n_2 identity identity 20 tenferro replay does not implement this oracle family yet
polygamma_polygamma_n_3 identity identity 20 tenferro replay does not implement this oracle family yet
polygamma_polygamma_n_4 identity identity 20 tenferro replay does not implement this oracle family yet
positive identity identity 4 tenferro replay does not implement this oracle family yet
pow identity identity 36 tenferro replay does not implement this oracle family yet
prod identity identity 156 tenferro replay does not implement this oracle family yet
qr identity identity 108 tenferro replay currently supports this family only for float64
rad2deg identity identity 2 tenferro replay does not implement this oracle family yet
real identity identity 12 tenferro replay does not implement this oracle family yet
reciprocal identity identity 12 tenferro replay does not implement this oracle family yet
round identity identity 2 tenferro replay does not implement this oracle family yet
round_decimals_0 identity identity 6 tenferro replay does not implement this oracle family yet
round_decimals_3 identity identity 6 tenferro replay does not implement this oracle family yet
round_decimals_neg_3 identity identity 6 tenferro replay does not implement this oracle family yet
rsqrt identity identity 12 tenferro replay does not implement this oracle family yet
rsub identity identity 44 tenferro replay does not implement this oracle family yet
sgn identity identity 4 tenferro replay does not implement this oracle family yet
sigmoid identity identity 12 tenferro replay does not implement this oracle family yet
sign identity identity 2 tenferro replay does not implement this oracle family yet
sin identity identity 4 tenferro replay does not implement this oracle family yet
sinc identity identity 12 tenferro replay does not implement this oracle family yet
sinh identity identity 4 tenferro replay does not implement this oracle family yet
solve identity identity 72 tenferro replay currently supports this family only for float64
solve_ex identity identity 72 tenferro replay currently supports this family only for float64
solve_triangular identity identity 1296 tenferro replay currently supports this family only for float64
special_entr identity identity 4 tenferro replay does not implement this oracle family yet
special_erfcx identity identity 6 tenferro replay does not implement this oracle family yet
special_i0e identity identity 4 tenferro replay does not implement this oracle family yet
special_i1 identity identity 6 tenferro replay does not implement this oracle family yet
special_i1e identity identity 6 tenferro replay does not implement this oracle family yet
special_log_ndtr identity identity 6 tenferro replay does not implement this oracle family yet
special_ndtr identity identity 6 tenferro replay does not implement this oracle family yet
special_ndtri identity identity 6 tenferro replay does not implement this oracle family yet
special_polygamma_special_polygamma_n_0 identity identity 20 tenferro replay does not implement this oracle family yet
special_xlog1py identity identity 18 tenferro replay does not implement this oracle family yet
sqrt identity identity 4 tenferro replay does not implement this oracle family yet
square identity identity 12 tenferro replay does not implement this oracle family yet
std identity identity 56 tenferro replay does not implement this oracle family yet
std_unbiased identity identity 8 tenferro replay does not implement this oracle family yet
sub identity identity 44 tenferro replay does not implement this oracle family yet
sum identity identity 80 tenferro replay does not implement this oracle family yet
svdvals identity identity 144 tenferro replay does not implement this scalar-output oracle family yet
tan identity identity 4 tenferro replay does not implement this oracle family yet
tanh identity identity 4 tenferro replay does not implement this oracle family yet
tensorinv identity identity 8 tenferro has no matching public traced linalg API to replay this oracle family yet
tensorsolve identity identity 16 tenferro has no matching public traced linalg API to replay this oracle family yet
tropical_einsum_maxplus identity identity 1 tenferro replay does not implement this oracle family yet
true_divide identity identity 36 tenferro replay does not implement this oracle family yet
trunc identity identity 2 tenferro replay does not implement this oracle family yet
vander identity identity 40 tenferro has no matching public traced linalg API to replay this oracle family yet
var identity identity 56 tenferro replay does not implement this oracle family yet
var_unbiased identity identity 8 tenferro replay does not implement this oracle family yet
vecdot identity identity 176 tenferro has no matching public traced linalg API to replay this oracle family yet
vector_norm identity identity 672 tenferro replay currently supports only the rank-1 scalar-output vector_norm slice accepted by the current NormKind adapter; complex inputs are further restricted to ord=P(2)
xlogy identity identity 18 tenferro replay does not implement this oracle family yet