← CPU results

cpu/linalg_jvp_vjp

profile: zen5-cpuhardware: x86_64date: 2026-10-28 00:16:12Ztenferro: 8fec1ca70852unit: msthreads: [1, 4, 8]

Legacy report: ingestion provenance is unrecorded; no raw artifact is inferred.

Compute-bound cases (240)

Absolute medians on a log time axis. Bars are shorter for faster calls; the dashed line is the best reference for each case.

casegroupvs PyTorchvs JAXnot measuredflags
grad_sum_eigh_jvpdtype=f64 / threads=1 / shape=1024x1024trace 0.72xtrace 0.98x--
grad_sum_eigh_jvpdtype=f64 / threads=1 / shape=16x16trace 0.34xtrace 1.00x--
grad_sum_eigh_jvpdtype=f64 / threads=1 / shape=256x256trace 0.80xtrace 0.97x--
grad_sum_eigh_jvpdtype=f64 / threads=1 / shape=2x2trace 0.21xtrace 2.14x--
grad_sum_eigh_jvpdtype=f64 / threads=1 / shape=32x32trace 0.51xtrace 0.89x--
grad_sum_eigh_jvpdtype=f64 / threads=1 / shape=4x4trace 0.23xtrace 1.99x--
grad_sum_eigh_jvpdtype=f64 / threads=1 / shape=512x512trace 0.76xtrace 0.97x--
grad_sum_eigh_jvpdtype=f64 / threads=1 / shape=8x8trace 0.25xtrace 1.33x--
grad_sum_eigh_jvpdtype=f64 / threads=4 / shape=1024x1024trace 0.74xtrace 0.63x--
grad_sum_eigh_jvpdtype=f64 / threads=4 / shape=16x16trace 0.35xtrace 1.30x--
grad_sum_eigh_jvpdtype=f64 / threads=4 / shape=256x256trace 4.76xtrace 2.61x--
grad_sum_eigh_jvpdtype=f64 / threads=4 / shape=2x2trace 0.24xtrace 2.48x--
grad_sum_eigh_jvpdtype=f64 / threads=4 / shape=32x32trace 0.55xtrace 1.05x--
grad_sum_eigh_jvpdtype=f64 / threads=4 / shape=4x4trace 0.25xtrace 2.16x--
grad_sum_eigh_jvpdtype=f64 / threads=4 / shape=512x512trace 2.21xtrace 1.43x--
grad_sum_eigh_jvpdtype=f64 / threads=4 / shape=8x8trace 0.28xtrace 2.36x--
grad_sum_eigh_jvpdtype=f64 / threads=8 / shape=1024x1024trace 1.64xtrace 1.11x--
grad_sum_eigh_jvpdtype=f64 / threads=8 / shape=16x16trace 0.36xtrace 1.35x--
grad_sum_eigh_jvpdtype=f64 / threads=8 / shape=256x256trace 7.90xtrace 3.17x--
grad_sum_eigh_jvpdtype=f64 / threads=8 / shape=2x2trace 0.25xtrace 2.52x--
grad_sum_eigh_jvpdtype=f64 / threads=8 / shape=32x32trace 0.55xtrace 1.02x--
grad_sum_eigh_jvpdtype=f64 / threads=8 / shape=4x4trace 0.26xtrace 2.17x--
grad_sum_eigh_jvpdtype=f64 / threads=8 / shape=512x512trace 2.93xtrace 1.20x--
grad_sum_eigh_jvpdtype=f64 / threads=8 / shape=8x8trace 0.29xtrace 2.34x--
grad_sum_eigh_vjpdtype=f64 / threads=1 / shape=1024x1024trace 1.07xtrace 0.99x--
grad_sum_eigh_vjpdtype=f64 / threads=1 / shape=16x16trace 0.38xtrace 0.96x--
grad_sum_eigh_vjpdtype=f64 / threads=1 / shape=256x256trace 0.99xtrace 0.97x--
grad_sum_eigh_vjpdtype=f64 / threads=1 / shape=2x2trace 0.24xtrace 2.06x--
grad_sum_eigh_vjpdtype=f64 / threads=1 / shape=32x32trace 0.58xtrace 0.88x--
grad_sum_eigh_vjpdtype=f64 / threads=1 / shape=4x4trace 0.26xtrace 1.81x--
grad_sum_eigh_vjpdtype=f64 / threads=1 / shape=512x512trace 0.99xtrace 0.97x--
grad_sum_eigh_vjpdtype=f64 / threads=1 / shape=8x8trace 0.29xtrace 1.22x--
grad_sum_eigh_vjpdtype=f64 / threads=4 / shape=1024x1024trace 1.12xtrace 0.64x--
grad_sum_eigh_vjpdtype=f64 / threads=4 / shape=16x16trace 0.41xtrace 1.26x--
grad_sum_eigh_vjpdtype=f64 / threads=4 / shape=256x256trace 2.53xtrace 1.24x--
grad_sum_eigh_vjpdtype=f64 / threads=4 / shape=2x2trace 0.27xtrace 2.40x--
grad_sum_eigh_vjpdtype=f64 / threads=4 / shape=32x32trace 0.63xtrace 1.06x--
grad_sum_eigh_vjpdtype=f64 / threads=4 / shape=4x4trace 0.28xtrace 1.95x--
grad_sum_eigh_vjpdtype=f64 / threads=4 / shape=512x512trace 1.01xtrace 0.51x--
grad_sum_eigh_vjpdtype=f64 / threads=4 / shape=8x8trace 0.31xtrace 2.06x--
grad_sum_eigh_vjpdtype=f64 / threads=8 / shape=1024x1024trace 1.15xtrace 0.56x--
grad_sum_eigh_vjpdtype=f64 / threads=8 / shape=16x16trace 0.42xtrace 1.31x--
grad_sum_eigh_vjpdtype=f64 / threads=8 / shape=256x256trace 9.02xtrace 3.18x--
grad_sum_eigh_vjpdtype=f64 / threads=8 / shape=2x2trace 0.28xtrace 2.35x--
grad_sum_eigh_vjpdtype=f64 / threads=8 / shape=32x32trace 0.63xtrace 1.06x--
grad_sum_eigh_vjpdtype=f64 / threads=8 / shape=4x4trace 0.30xtrace 2.03x--
grad_sum_eigh_vjpdtype=f64 / threads=8 / shape=512x512trace 5.33xtrace 1.82x--
grad_sum_eigh_vjpdtype=f64 / threads=8 / shape=8x8trace 0.33xtrace 2.25x--
grad_sum_lu_jvpdtype=f64 / threads=1 / shape=1024x1024trace 0.46xtrace 0.99x--
grad_sum_lu_jvpdtype=f64 / threads=1 / shape=16x16trace 0.18xtrace 1.45x--
grad_sum_lu_jvpdtype=f64 / threads=1 / shape=256x256trace 0.50xtrace 1.05x--
grad_sum_lu_jvpdtype=f64 / threads=1 / shape=2x2trace 0.16xtrace 2.30x--
grad_sum_lu_jvpdtype=f64 / threads=1 / shape=32x32trace 0.25xtrace 1.32x--
grad_sum_lu_jvpdtype=f64 / threads=1 / shape=4x4trace 0.16xtrace 2.25x--
grad_sum_lu_jvpdtype=f64 / threads=1 / shape=512x512trace 0.42xtrace 1.05x--
grad_sum_lu_jvpdtype=f64 / threads=1 / shape=8x8trace 0.17xtrace 1.60x--
grad_sum_lu_jvpdtype=f64 / threads=4 / shape=1024x1024trace 0.43xtrace 0.59x--
grad_sum_lu_jvpdtype=f64 / threads=4 / shape=16x16trace 0.19xtrace 2.09x--
grad_sum_lu_jvpdtype=f64 / threads=4 / shape=256x256trace 1.79xtrace 1.69x--
grad_sum_lu_jvpdtype=f64 / threads=4 / shape=2x2trace 0.17xtrace 2.67x--
grad_sum_lu_jvpdtype=f64 / threads=4 / shape=32x32trace 0.28xtrace 1.47x--
grad_sum_lu_jvpdtype=f64 / threads=4 / shape=4x4trace 0.18xtrace 2.43x--
grad_sum_lu_jvpdtype=f64 / threads=4 / shape=512x512trace 0.53xtrace 0.66x--
grad_sum_lu_jvpdtype=f64 / threads=4 / shape=8x8trace 0.18xtrace 1.70x--
grad_sum_lu_jvpdtype=f64 / threads=8 / shape=1024x1024trace 0.69xtrace 0.92x--
grad_sum_lu_jvpdtype=f64 / threads=8 / shape=16x16trace 0.19xtrace 2.12x--
grad_sum_lu_jvpdtype=f64 / threads=8 / shape=256x256trace 1.41xtrace 0.92x--
grad_sum_lu_jvpdtype=f64 / threads=8 / shape=2x2trace 0.18xtrace 2.62x--
grad_sum_lu_jvpdtype=f64 / threads=8 / shape=32x32trace 0.24xtrace 0.84x--
grad_sum_lu_jvpdtype=f64 / threads=8 / shape=4x4trace 0.18xtrace 2.48x--
grad_sum_lu_jvpdtype=f64 / threads=8 / shape=512x512trace 0.79xtrace 0.70x--
grad_sum_lu_jvpdtype=f64 / threads=8 / shape=8x8trace 0.18xtrace 1.71x--
grad_sum_lu_vjpdtype=f64 / threads=1 / shape=1024x1024trace 0.87xtrace 1.00x--
grad_sum_lu_vjpdtype=f64 / threads=1 / shape=16x16trace 0.22xtrace 1.38x--
grad_sum_lu_vjpdtype=f64 / threads=1 / shape=256x256trace 0.95xtrace 1.09x--
grad_sum_lu_vjpdtype=f64 / threads=1 / shape=2x2trace 0.19xtrace 2.20x--
grad_sum_lu_vjpdtype=f64 / threads=1 / shape=32x32trace 0.34xtrace 1.39x--
grad_sum_lu_vjpdtype=f64 / threads=1 / shape=4x4trace 0.19xtrace 2.02x--
grad_sum_lu_vjpdtype=f64 / threads=1 / shape=512x512trace 0.81xtrace 1.06x--
grad_sum_lu_vjpdtype=f64 / threads=1 / shape=8x8trace 0.19xtrace 1.50x--
grad_sum_lu_vjpdtype=f64 / threads=4 / shape=1024x1024trace 0.93xtrace 0.64x--
grad_sum_lu_vjpdtype=f64 / threads=4 / shape=16x16trace 0.23xtrace 2.15x--
grad_sum_lu_vjpdtype=f64 / threads=4 / shape=256x256trace 2.33xtrace 1.37x--
grad_sum_lu_vjpdtype=f64 / threads=4 / shape=2x2trace 0.21xtrace 2.49x--
grad_sum_lu_vjpdtype=f64 / threads=4 / shape=32x32trace 0.44xtrace 1.46x--
grad_sum_lu_vjpdtype=f64 / threads=4 / shape=4x4trace 0.20xtrace 2.27x--
grad_sum_lu_vjpdtype=f64 / threads=4 / shape=512x512trace 0.87xtrace 0.56x--
grad_sum_lu_vjpdtype=f64 / threads=4 / shape=8x8trace 0.21xtrace 1.66x--
grad_sum_lu_vjpdtype=f64 / threads=8 / shape=1024x1024trace 1.53xtrace 0.92x--
grad_sum_lu_vjpdtype=f64 / threads=8 / shape=16x16trace 0.24xtrace 2.23x--
grad_sum_lu_vjpdtype=f64 / threads=8 / shape=256x256trace 3.96xtrace 1.44x--
grad_sum_lu_vjpdtype=f64 / threads=8 / shape=2x2trace 0.21xtrace 2.45x--
grad_sum_lu_vjpdtype=f64 / threads=8 / shape=32x32trace 0.45xtrace 1.82x--
grad_sum_lu_vjpdtype=f64 / threads=8 / shape=4x4trace 0.21xtrace 2.24x--
grad_sum_lu_vjpdtype=f64 / threads=8 / shape=512x512trace 1.60xtrace 0.85x--
grad_sum_lu_vjpdtype=f64 / threads=8 / shape=8x8trace 0.22xtrace 1.67x--
grad_sum_qr_jvpdtype=f64 / threads=1 / shape=1024x1024trace 0.84xtrace 0.93x--
grad_sum_qr_jvpdtype=f64 / threads=1 / shape=16x16trace 0.36xtrace 1.79x--
grad_sum_qr_jvpdtype=f64 / threads=1 / shape=256x256trace 0.92xtrace 1.04x--
grad_sum_qr_jvpdtype=f64 / threads=1 / shape=2x2trace 0.33xtrace 3.40x--
grad_sum_qr_jvpdtype=f64 / threads=1 / shape=32x32trace 0.46xtrace 1.42x--
grad_sum_qr_jvpdtype=f64 / threads=1 / shape=4x4trace 0.34xtrace 3.29x--
grad_sum_qr_jvpdtype=f64 / threads=1 / shape=512x512trace 0.84xtrace 1.09x--
grad_sum_qr_jvpdtype=f64 / threads=1 / shape=8x8trace 0.34xtrace 2.32x--
grad_sum_qr_jvpdtype=f64 / threads=4 / shape=1024x1024trace 0.96xtrace 0.57x--
grad_sum_qr_jvpdtype=f64 / threads=4 / shape=16x16trace 0.37xtrace 3.17x--
grad_sum_qr_jvpdtype=f64 / threads=4 / shape=256x256trace 4.33xtrace 2.17x--
grad_sum_qr_jvpdtype=f64 / threads=4 / shape=2x2trace 0.36xtrace 3.99x--
grad_sum_qr_jvpdtype=f64 / threads=4 / shape=32x32trace 0.51xtrace 0.86x--
grad_sum_qr_jvpdtype=f64 / threads=4 / shape=4x4trace 0.37xtrace 3.51x--
grad_sum_qr_jvpdtype=f64 / threads=4 / shape=512x512trace 0.96xtrace 0.63x--
grad_sum_qr_jvpdtype=f64 / threads=4 / shape=8x8trace 0.36xtrace 2.65x--
grad_sum_qr_jvpdtype=f64 / threads=8 / shape=1024x1024trace 0.96xtrace 0.56x--
grad_sum_qr_jvpdtype=f64 / threads=8 / shape=16x16trace 0.39xtrace 3.16x--
grad_sum_qr_jvpdtype=f64 / threads=8 / shape=256x256trace 5.53xtrace 1.76x--
grad_sum_qr_jvpdtype=f64 / threads=8 / shape=2x2trace 0.36xtrace 3.90x--
grad_sum_qr_jvpdtype=f64 / threads=8 / shape=32x32trace 0.48xtrace 0.25x--
grad_sum_qr_jvpdtype=f64 / threads=8 / shape=4x4trace 0.37xtrace 3.45x--
grad_sum_qr_jvpdtype=f64 / threads=8 / shape=512x512trace 2.19xtrace 0.96x--
grad_sum_qr_jvpdtype=f64 / threads=8 / shape=8x8trace 0.37xtrace 2.68x--
grad_sum_qr_vjpdtype=f64 / threads=1 / shape=1024x1024trace 0.88xtrace 0.93x--
grad_sum_qr_vjpdtype=f64 / threads=1 / shape=16x16trace 0.34xtrace 1.85x--
grad_sum_qr_vjpdtype=f64 / threads=1 / shape=256x256trace 0.90xtrace 1.04x--
grad_sum_qr_vjpdtype=f64 / threads=1 / shape=2x2trace 0.31xtrace 3.47x--
grad_sum_qr_vjpdtype=f64 / threads=1 / shape=32x32trace 0.46xtrace 1.50x--
grad_sum_qr_vjpdtype=f64 / threads=1 / shape=4x4trace 0.32xtrace 3.06x--
grad_sum_qr_vjpdtype=f64 / threads=1 / shape=512x512trace 0.80xtrace 1.01x--
grad_sum_qr_vjpdtype=f64 / threads=1 / shape=8x8trace 0.32xtrace 2.37x--
grad_sum_qr_vjpdtype=f64 / threads=4 / shape=1024x1024trace 0.96xtrace 0.61x--
grad_sum_qr_vjpdtype=f64 / threads=4 / shape=16x16trace 0.36xtrace 3.35x--
grad_sum_qr_vjpdtype=f64 / threads=4 / shape=256x256trace 4.64xtrace 2.44x--
grad_sum_qr_vjpdtype=f64 / threads=4 / shape=2x2trace 0.33xtrace 4.02x--
grad_sum_qr_vjpdtype=f64 / threads=4 / shape=32x32trace 0.49xtrace 1.63x--
grad_sum_qr_vjpdtype=f64 / threads=4 / shape=4x4trace 0.34xtrace 3.49x--
grad_sum_qr_vjpdtype=f64 / threads=4 / shape=512x512trace 0.76xtrace 0.53x--
grad_sum_qr_vjpdtype=f64 / threads=4 / shape=8x8trace 0.34xtrace 3.08x--
grad_sum_qr_vjpdtype=f64 / threads=8 / shape=1024x1024trace 2.25xtrace 1.28x--
grad_sum_qr_vjpdtype=f64 / threads=8 / shape=16x16trace 0.38xtrace 3.40x--
grad_sum_qr_vjpdtype=f64 / threads=8 / shape=256x256trace 5.51xtrace 1.82x--
grad_sum_qr_vjpdtype=f64 / threads=8 / shape=2x2trace 0.35xtrace 4.00x--
grad_sum_qr_vjpdtype=f64 / threads=8 / shape=32x32trace 0.43xtrace 1.33x--
grad_sum_qr_vjpdtype=f64 / threads=8 / shape=4x4trace 0.35xtrace 3.51x--
grad_sum_qr_vjpdtype=f64 / threads=8 / shape=512x512trace 1.54xtrace 0.77x--
grad_sum_qr_vjpdtype=f64 / threads=8 / shape=8x8trace 0.36xtrace 3.08x--
grad_sum_solve_jvpdtype=f64 / threads=1 / shape=1024x1024,rhs=1trace 0.67xtrace 0.87x--
grad_sum_solve_jvpdtype=f64 / threads=1 / shape=16x16,rhs=1trace 0.07xtrace 1.31x--
grad_sum_solve_jvpdtype=f64 / threads=1 / shape=256x256,rhs=1trace 0.65xtrace 0.97x--
grad_sum_solve_jvpdtype=f64 / threads=1 / shape=2x2,rhs=1trace 0.06xtrace 1.53x--
grad_sum_solve_jvpdtype=f64 / threads=1 / shape=32x32,rhs=1trace 0.09xtrace 1.09x--
grad_sum_solve_jvpdtype=f64 / threads=1 / shape=4x4,rhs=1trace 0.06xtrace 1.52x--
grad_sum_solve_jvpdtype=f64 / threads=1 / shape=512x512,rhs=1trace 0.66xtrace 0.83x--
grad_sum_solve_jvpdtype=f64 / threads=1 / shape=8x8,rhs=1trace 0.07xtrace 1.47x--
grad_sum_solve_jvpdtype=f64 / threads=4 / shape=1024x1024,rhs=1trace 1.58xtrace 0.99x--
grad_sum_solve_jvpdtype=f64 / threads=4 / shape=16x16,rhs=1trace 0.08xtrace 1.44x--
grad_sum_solve_jvpdtype=f64 / threads=4 / shape=256x256,rhs=1trace 1.53xtrace 1.52x--
grad_sum_solve_jvpdtype=f64 / threads=4 / shape=2x2,rhs=1trace 0.07xtrace 1.80x--
grad_sum_solve_jvpdtype=f64 / threads=4 / shape=32x32,rhs=1trace 0.10xtrace 1.99x--
grad_sum_solve_jvpdtype=f64 / threads=4 / shape=4x4,rhs=1trace 0.07xtrace 1.78x--
grad_sum_solve_jvpdtype=f64 / threads=4 / shape=512x512,rhs=1trace 0.83xtrace 0.57x--
grad_sum_solve_jvpdtype=f64 / threads=4 / shape=8x8,rhs=1trace 0.07xtrace 1.68x--
grad_sum_solve_jvpdtype=f64 / threads=8 / shape=1024x1024,rhs=1trace 5.29xtrace 3.33x--
grad_sum_solve_jvpdtype=f64 / threads=8 / shape=16x16,rhs=1trace 0.08xtrace 1.47x--
grad_sum_solve_jvpdtype=f64 / threads=8 / shape=256x256,rhs=1trace 1.92xtrace 5.10x--
grad_sum_solve_jvpdtype=f64 / threads=8 / shape=2x2,rhs=1trace 0.07xtrace 1.76x--
grad_sum_solve_jvpdtype=f64 / threads=8 / shape=32x32,rhs=1trace 0.10xtrace 1.96x--
grad_sum_solve_jvpdtype=f64 / threads=8 / shape=4x4,rhs=1trace 0.07xtrace 1.74x--
grad_sum_solve_jvpdtype=f64 / threads=8 / shape=512x512,rhs=1trace 1.51xtrace 0.93x--
grad_sum_solve_jvpdtype=f64 / threads=8 / shape=8x8,rhs=1trace 0.07xtrace 1.65x--
grad_sum_solve_vjpdtype=f64 / threads=1 / shape=1024x1024,rhs=1trace 0.39xtrace 0.92x--
grad_sum_solve_vjpdtype=f64 / threads=1 / shape=16x16,rhs=1trace 0.15xtrace 1.14x--
grad_sum_solve_vjpdtype=f64 / threads=1 / shape=256x256,rhs=1trace 0.45xtrace 0.95x--
grad_sum_solve_vjpdtype=f64 / threads=1 / shape=2x2,rhs=1trace 0.14xtrace 1.37x--
grad_sum_solve_vjpdtype=f64 / threads=1 / shape=32x32,rhs=1trace 0.20xtrace 0.91x--
grad_sum_solve_vjpdtype=f64 / threads=1 / shape=4x4,rhs=1trace 0.15xtrace 1.34x--
grad_sum_solve_vjpdtype=f64 / threads=1 / shape=512x512,rhs=1trace 0.40xtrace 0.83x--
grad_sum_solve_vjpdtype=f64 / threads=1 / shape=8x8,rhs=1trace 0.15xtrace 1.29x--
grad_sum_solve_vjpdtype=f64 / threads=4 / shape=1024x1024,rhs=1trace 0.94xtrace 1.19x--
grad_sum_solve_vjpdtype=f64 / threads=4 / shape=16x16,rhs=1trace 0.17xtrace 1.27x--
grad_sum_solve_vjpdtype=f64 / threads=4 / shape=256x256,rhs=1trace 1.30xtrace 1.42x--
grad_sum_solve_vjpdtype=f64 / threads=4 / shape=2x2,rhs=1trace 0.16xtrace 1.62x--
grad_sum_solve_vjpdtype=f64 / threads=4 / shape=32x32,rhs=1trace 0.22xtrace 1.82x--
grad_sum_solve_vjpdtype=f64 / threads=4 / shape=4x4,rhs=1trace 0.16xtrace 1.53x--
grad_sum_solve_vjpdtype=f64 / threads=4 / shape=512x512,rhs=1trace 0.54xtrace 0.54x--
grad_sum_solve_vjpdtype=f64 / threads=4 / shape=8x8,rhs=1trace 0.16xtrace 1.45x--
grad_sum_solve_vjpdtype=f64 / threads=8 / shape=1024x1024,rhs=1trace 1.50xtrace 1.70x--
grad_sum_solve_vjpdtype=f64 / threads=8 / shape=16x16,rhs=1trace 0.18xtrace 1.28x--
grad_sum_solve_vjpdtype=f64 / threads=8 / shape=256x256,rhs=1trace 3.19xtrace 4.99x--
grad_sum_solve_vjpdtype=f64 / threads=8 / shape=2x2,rhs=1trace 0.17xtrace 1.56x--
grad_sum_solve_vjpdtype=f64 / threads=8 / shape=32x32,rhs=1trace 0.22xtrace 1.72x--
grad_sum_solve_vjpdtype=f64 / threads=8 / shape=4x4,rhs=1trace 0.17xtrace 1.52x--
grad_sum_solve_vjpdtype=f64 / threads=8 / shape=512x512,rhs=1trace 1.33xtrace 1.18x--
grad_sum_solve_vjpdtype=f64 / threads=8 / shape=8x8,rhs=1trace 0.17xtrace 1.49x--
grad_sum_svd_s_jvpdtype=f64 / threads=1 / shape=1024x1024trace 0.72xtrace 0.96x--
grad_sum_svd_s_jvpdtype=f64 / threads=1 / shape=16x16trace 0.28xtrace 0.94x--
grad_sum_svd_s_jvpdtype=f64 / threads=1 / shape=256x256trace 0.78xtrace 0.97x--
grad_sum_svd_s_jvpdtype=f64 / threads=1 / shape=2x2trace 0.10xtrace 1.39x--
grad_sum_svd_s_jvpdtype=f64 / threads=1 / shape=32x32trace 0.46xtrace 0.96x--
grad_sum_svd_s_jvpdtype=f64 / threads=1 / shape=4x4trace 0.12xtrace 1.35x--
grad_sum_svd_s_jvpdtype=f64 / threads=1 / shape=512x512trace 0.72xtrace 0.95x--
grad_sum_svd_s_jvpdtype=f64 / threads=1 / shape=8x8trace 0.18xtrace 1.10x--
grad_sum_svd_s_jvpdtype=f64 / threads=4 / shape=1024x1024trace 0.72xtrace 0.64x--
grad_sum_svd_s_jvpdtype=f64 / threads=4 / shape=16x16trace 0.28xtrace 1.09x--
grad_sum_svd_s_jvpdtype=f64 / threads=4 / shape=256x256trace 0.84xtrace 0.74x--
grad_sum_svd_s_jvpdtype=f64 / threads=4 / shape=2x2trace 0.11xtrace 1.56x--
grad_sum_svd_s_jvpdtype=f64 / threads=4 / shape=32x32trace 0.49xtrace 1.09x--
grad_sum_svd_s_jvpdtype=f64 / threads=4 / shape=4x4trace 0.13xtrace 1.40x--
grad_sum_svd_s_jvpdtype=f64 / threads=4 / shape=512x512trace 0.75xtrace 0.60x--
grad_sum_svd_s_jvpdtype=f64 / threads=4 / shape=8x8trace 0.19xtrace 1.68x--
grad_sum_svd_s_jvpdtype=f64 / threads=8 / shape=1024x1024trace 0.72xtrace 0.54x--
grad_sum_svd_s_jvpdtype=f64 / threads=8 / shape=16x16trace 0.28xtrace 1.10x--
grad_sum_svd_s_jvpdtype=f64 / threads=8 / shape=256x256trace 1.60xtrace 1.20x--
grad_sum_svd_s_jvpdtype=f64 / threads=8 / shape=2x2trace 0.11xtrace 1.51x--
grad_sum_svd_s_jvpdtype=f64 / threads=8 / shape=32x32trace 0.49xtrace 1.09x--
grad_sum_svd_s_jvpdtype=f64 / threads=8 / shape=4x4trace 0.13xtrace 1.42x--
grad_sum_svd_s_jvpdtype=f64 / threads=8 / shape=512x512trace 1.45xtrace 0.96x--
grad_sum_svd_s_jvpdtype=f64 / threads=8 / shape=8x8trace 0.19xtrace 1.71x--
grad_sum_svd_s_vjpdtype=f64 / threads=1 / shape=1024x1024trace 0.98xtrace 0.94x--
grad_sum_svd_s_vjpdtype=f64 / threads=1 / shape=16x16trace 0.39xtrace 0.91x--
grad_sum_svd_s_vjpdtype=f64 / threads=1 / shape=256x256trace 0.93xtrace 0.97x--
grad_sum_svd_s_vjpdtype=f64 / threads=1 / shape=2x2trace 0.15xtrace 1.25x--
grad_sum_svd_s_vjpdtype=f64 / threads=1 / shape=32x32trace 0.60xtrace 0.95x--
grad_sum_svd_s_vjpdtype=f64 / threads=1 / shape=4x4trace 0.18xtrace 1.24x--
grad_sum_svd_s_vjpdtype=f64 / threads=1 / shape=512x512trace 0.89xtrace 0.94x--
grad_sum_svd_s_vjpdtype=f64 / threads=1 / shape=8x8trace 0.27xtrace 1.04x--
grad_sum_svd_s_vjpdtype=f64 / threads=4 / shape=1024x1024trace 0.91xtrace 0.64x--
grad_sum_svd_s_vjpdtype=f64 / threads=4 / shape=16x16trace 0.40xtrace 1.07x--
grad_sum_svd_s_vjpdtype=f64 / threads=4 / shape=256x256trace 1.02xtrace 0.81x--
grad_sum_svd_s_vjpdtype=f64 / threads=4 / shape=2x2trace 0.16xtrace 1.39x--
grad_sum_svd_s_vjpdtype=f64 / threads=4 / shape=32x32trace 0.63xtrace 1.09x--
grad_sum_svd_s_vjpdtype=f64 / threads=4 / shape=4x4trace 0.19xtrace 1.26x--
grad_sum_svd_s_vjpdtype=f64 / threads=4 / shape=512x512trace 0.86xtrace 0.61x--
grad_sum_svd_s_vjpdtype=f64 / threads=4 / shape=8x8trace 0.27xtrace 1.62x--
grad_sum_svd_s_vjpdtype=f64 / threads=8 / shape=1024x1024trace 0.88xtrace 0.53x--
grad_sum_svd_s_vjpdtype=f64 / threads=8 / shape=16x16trace 0.41xtrace 1.07x--
grad_sum_svd_s_vjpdtype=f64 / threads=8 / shape=256x256trace 1.79xtrace 1.28x--
grad_sum_svd_s_vjpdtype=f64 / threads=8 / shape=2x2trace 0.17xtrace 1.35x--
grad_sum_svd_s_vjpdtype=f64 / threads=8 / shape=32x32trace 0.64xtrace 1.09x--
grad_sum_svd_s_vjpdtype=f64 / threads=8 / shape=4x4trace 0.20xtrace 1.27x--
grad_sum_svd_s_vjpdtype=f64 / threads=8 / shape=512x512trace 1.49xtrace 0.91x--
grad_sum_svd_s_vjpdtype=f64 / threads=8 / shape=8x8trace 0.28xtrace 1.65x--

Charts below are ordered best first (smallest ratio).

grad_sum_solve_jvp dtype=f64 / threads=1 / shape=2x2,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1242 ms)jax-cpu0.005163 mspytorch-cpu0.1242 mstenferro-trace0.007891 ms · 0.06x

grad_sum_solve_jvp dtype=f64 / threads=1 / shape=4x4,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1241 ms)jax-cpu0.005246 mspytorch-cpu0.1241 mstenferro-trace0.007975 ms · 0.06x

grad_sum_solve_jvp dtype=f64 / threads=1 / shape=8x8,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1245 ms)jax-cpu0.005586 mspytorch-cpu0.1245 mstenferro-trace0.008208 ms · 0.07x

grad_sum_solve_jvp dtype=f64 / threads=1 / shape=16x16,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1286 ms)jax-cpu0.006725 mspytorch-cpu0.1286 mstenferro-trace0.008829 ms · 0.07x

grad_sum_solve_jvp dtype=f64 / threads=8 / shape=2x2,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1995 ms)jax-cpu0.008213 mspytorch-cpu0.1995 mstenferro-trace0.01445 ms · 0.07x

grad_sum_solve_jvp dtype=f64 / threads=8 / shape=4x4,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1997 ms)jax-cpu0.008382 mspytorch-cpu0.1997 mstenferro-trace0.01457 ms · 0.07x

grad_sum_solve_jvp dtype=f64 / threads=4 / shape=8x8,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.13 ms)jax-cpu0.005644 mspytorch-cpu0.13 mstenferro-trace0.009497 ms · 0.07x

grad_sum_solve_jvp dtype=f64 / threads=4 / shape=2x2,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1291 ms)jax-cpu0.005255 mspytorch-cpu0.1291 mstenferro-trace0.009453 ms · 0.07x

grad_sum_solve_jvp dtype=f64 / threads=4 / shape=4x4,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1277 ms)jax-cpu0.005245 mspytorch-cpu0.1277 mstenferro-trace0.009353 ms · 0.07x

grad_sum_solve_jvp dtype=f64 / threads=8 / shape=8x8,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.2017 ms)jax-cpu0.009076 mspytorch-cpu0.2017 mstenferro-trace0.01502 ms · 0.07x

grad_sum_solve_jvp dtype=f64 / threads=4 / shape=16x16,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1297 ms)jax-cpu0.006992 mspytorch-cpu0.1297 mstenferro-trace0.01004 ms · 0.08x

grad_sum_solve_jvp dtype=f64 / threads=8 / shape=16x16,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.2064 ms)jax-cpu0.01094 mspytorch-cpu0.2064 mstenferro-trace0.01604 ms · 0.08x

grad_sum_solve_jvp dtype=f64 / threads=1 / shape=32x32,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1348 ms)jax-cpu0.01153 mspytorch-cpu0.1348 mstenferro-trace0.01259 ms · 0.09x

grad_sum_svd_s_jvp dtype=f64 / threads=1 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07092 ms)jax-cpu0.005223 mspytorch-cpu0.07092 mstenferro-trace0.007258 ms · 0.10x

grad_sum_solve_jvp dtype=f64 / threads=8 / shape=32x32,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.2153 ms)jax-cpu0.01129 mspytorch-cpu0.2153 mstenferro-trace0.02215 ms · 0.10x

grad_sum_solve_jvp dtype=f64 / threads=4 / shape=32x32,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1364 ms)jax-cpu0.007161 mspytorch-cpu0.1364 mstenferro-trace0.01424 ms · 0.10x

grad_sum_svd_s_jvp dtype=f64 / threads=4 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07463 ms)jax-cpu0.005207 mspytorch-cpu0.07463 mstenferro-trace0.00814 ms · 0.11x

grad_sum_svd_s_jvp dtype=f64 / threads=8 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1129 ms)jax-cpu0.008364 mspytorch-cpu0.1129 mstenferro-trace0.01266 ms · 0.11x

grad_sum_svd_s_jvp dtype=f64 / threads=1 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07231 ms)jax-cpu0.006528 mspytorch-cpu0.07231 mstenferro-trace0.008807 ms · 0.12x

grad_sum_svd_s_jvp dtype=f64 / threads=4 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07412 ms)jax-cpu0.006886 mspytorch-cpu0.07412 mstenferro-trace0.009639 ms · 0.13x

grad_sum_svd_s_jvp dtype=f64 / threads=8 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1153 ms)jax-cpu0.01072 mspytorch-cpu0.1153 mstenferro-trace0.01518 ms · 0.13x

grad_sum_solve_vjp dtype=f64 / threads=1 / shape=2x2,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.054 ms)jax-cpu0.005631 mspytorch-cpu0.054 mstenferro-trace0.007726 ms · 0.14x

grad_sum_solve_vjp dtype=f64 / threads=1 / shape=4x4,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05299 ms)jax-cpu0.005827 mspytorch-cpu0.05299 mstenferro-trace0.007784 ms · 0.15x

grad_sum_solve_vjp dtype=f64 / threads=1 / shape=8x8,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05398 ms)jax-cpu0.006187 mspytorch-cpu0.05398 mstenferro-trace0.008 ms · 0.15x

grad_sum_solve_vjp dtype=f64 / threads=1 / shape=16x16,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05667 ms)jax-cpu0.007526 mspytorch-cpu0.05667 mstenferro-trace0.008615 ms · 0.15x

grad_sum_svd_s_vjp dtype=f64 / threads=1 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04419 ms)jax-cpu0.005445 mspytorch-cpu0.04419 mstenferro-trace0.006825 ms · 0.15x

grad_sum_lu_jvp dtype=f64 / threads=1 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07624 ms)jax-cpu0.005285 mspytorch-cpu0.07624 mstenferro-trace0.01217 ms · 0.16x

grad_sum_lu_jvp dtype=f64 / threads=1 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07559 ms)jax-cpu0.005447 mspytorch-cpu0.07559 mstenferro-trace0.01228 ms · 0.16x

grad_sum_solve_vjp dtype=f64 / threads=4 / shape=8x8,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05652 ms)jax-cpu0.00637 mspytorch-cpu0.05652 mstenferro-trace0.009245 ms · 0.16x

grad_sum_solve_vjp dtype=f64 / threads=4 / shape=2x2,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05568 ms)jax-cpu0.005651 mspytorch-cpu0.05568 mstenferro-trace0.009159 ms · 0.16x

grad_sum_solve_vjp dtype=f64 / threads=4 / shape=4x4,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05477 ms)jax-cpu0.005898 mspytorch-cpu0.05477 mstenferro-trace0.009015 ms · 0.16x

grad_sum_svd_s_vjp dtype=f64 / threads=4 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0457 ms)jax-cpu0.005406 mspytorch-cpu0.0457 mstenferro-trace0.007526 ms · 0.16x

grad_sum_lu_jvp dtype=f64 / threads=1 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07668 ms)jax-cpu0.007936 mspytorch-cpu0.07668 mstenferro-trace0.01269 ms · 0.17x

grad_sum_solve_vjp dtype=f64 / threads=8 / shape=2x2,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08415 ms)jax-cpu0.009053 mspytorch-cpu0.08415 mstenferro-trace0.01416 ms · 0.17x

grad_sum_svd_s_vjp dtype=f64 / threads=8 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06905 ms)jax-cpu0.008643 mspytorch-cpu0.06905 mstenferro-trace0.01165 ms · 0.17x

grad_sum_solve_vjp dtype=f64 / threads=8 / shape=4x4,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08406 ms)jax-cpu0.009322 mspytorch-cpu0.08406 mstenferro-trace0.01418 ms · 0.17x

grad_sum_solve_vjp dtype=f64 / threads=8 / shape=8x8,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08591 ms)jax-cpu0.009919 mspytorch-cpu0.08591 mstenferro-trace0.01475 ms · 0.17x

grad_sum_solve_vjp dtype=f64 / threads=4 / shape=16x16,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05722 ms)jax-cpu0.007757 mspytorch-cpu0.05722 mstenferro-trace0.009841 ms · 0.17x

grad_sum_lu_jvp dtype=f64 / threads=4 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08192 ms)jax-cpu0.005352 mspytorch-cpu0.08192 mstenferro-trace0.01431 ms · 0.17x

grad_sum_lu_jvp dtype=f64 / threads=8 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1267 ms)jax-cpu0.008511 mspytorch-cpu0.1267 mstenferro-trace0.02229 ms · 0.18x

grad_sum_solve_vjp dtype=f64 / threads=8 / shape=16x16,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08868 ms)jax-cpu0.01222 mspytorch-cpu0.08868 mstenferro-trace0.01567 ms · 0.18x

grad_sum_lu_jvp dtype=f64 / threads=4 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08056 ms)jax-cpu0.005901 mspytorch-cpu0.08056 mstenferro-trace0.01433 ms · 0.18x

grad_sum_lu_jvp dtype=f64 / threads=4 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08279 ms)jax-cpu0.00866 mspytorch-cpu0.08279 mstenferro-trace0.01474 ms · 0.18x

grad_sum_svd_s_jvp dtype=f64 / threads=1 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07956 ms)jax-cpu0.01293 mspytorch-cpu0.07956 mstenferro-trace0.01418 ms · 0.18x

grad_sum_lu_jvp dtype=f64 / threads=1 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08292 ms)jax-cpu0.01025 mspytorch-cpu0.08292 mstenferro-trace0.01489 ms · 0.18x

grad_sum_svd_s_vjp dtype=f64 / threads=1 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04591 ms)jax-cpu0.006714 mspytorch-cpu0.04591 mstenferro-trace0.008305 ms · 0.18x

grad_sum_lu_jvp dtype=f64 / threads=8 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1251 ms)jax-cpu0.009149 mspytorch-cpu0.1251 mstenferro-trace0.02264 ms · 0.18x

grad_sum_lu_jvp dtype=f64 / threads=8 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1272 ms)jax-cpu0.01362 mspytorch-cpu0.1272 mstenferro-trace0.02336 ms · 0.18x

grad_sum_svd_s_jvp dtype=f64 / threads=8 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1268 ms)jax-cpu0.01391 mspytorch-cpu0.1268 mstenferro-trace0.02384 ms · 0.19x

grad_sum_lu_vjp dtype=f64 / threads=1 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06087 ms)jax-cpu0.005241 mspytorch-cpu0.06087 mstenferro-trace0.01151 ms · 0.19x

grad_sum_svd_s_jvp dtype=f64 / threads=4 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07858 ms)jax-cpu0.008897 mspytorch-cpu0.07858 mstenferro-trace0.01498 ms · 0.19x

grad_sum_lu_vjp dtype=f64 / threads=1 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06116 ms)jax-cpu0.005769 mspytorch-cpu0.06116 mstenferro-trace0.01167 ms · 0.19x

grad_sum_svd_s_vjp dtype=f64 / threads=4 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04745 ms)jax-cpu0.007174 mspytorch-cpu0.04745 mstenferro-trace0.009075 ms · 0.19x

grad_sum_lu_vjp dtype=f64 / threads=1 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06204 ms)jax-cpu0.007993 mspytorch-cpu0.06204 mstenferro-trace0.01202 ms · 0.19x

grad_sum_lu_jvp dtype=f64 / threads=4 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08732 ms)jax-cpu0.008088 mspytorch-cpu0.08732 mstenferro-trace0.01694 ms · 0.19x

grad_sum_lu_jvp dtype=f64 / threads=8 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1383 ms)jax-cpu0.01267 mspytorch-cpu0.1383 mstenferro-trace0.02692 ms · 0.19x

grad_sum_solve_vjp dtype=f64 / threads=1 / shape=32x32,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06396 ms)jax-cpu0.01373 mspytorch-cpu0.06396 mstenferro-trace0.01249 ms · 0.20x

grad_sum_svd_s_vjp dtype=f64 / threads=8 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07117 ms)jax-cpu0.01114 mspytorch-cpu0.07117 mstenferro-trace0.01417 ms · 0.20x

grad_sum_lu_vjp dtype=f64 / threads=4 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06477 ms)jax-cpu0.005849 mspytorch-cpu0.06477 mstenferro-trace0.01327 ms · 0.20x

grad_sum_lu_vjp dtype=f64 / threads=4 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06454 ms)jax-cpu0.005339 mspytorch-cpu0.06454 mstenferro-trace0.01331 ms · 0.21x

grad_sum_lu_vjp dtype=f64 / threads=4 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06599 ms)jax-cpu0.008228 mspytorch-cpu0.06599 mstenferro-trace0.01367 ms · 0.21x

grad_sum_lu_vjp dtype=f64 / threads=8 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0989 ms)jax-cpu0.00845 mspytorch-cpu0.0989 mstenferro-trace0.02067 ms · 0.21x

grad_sum_eigh_jvp dtype=f64 / threads=1 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04733 ms)jax-cpu0.004629 mspytorch-cpu0.04733 mstenferro-trace0.009923 ms · 0.21x

grad_sum_lu_vjp dtype=f64 / threads=8 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0991 ms)jax-cpu0.009355 mspytorch-cpu0.0991 mstenferro-trace0.02098 ms · 0.21x

grad_sum_solve_vjp dtype=f64 / threads=8 / shape=32x32,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1021 ms)jax-cpu0.01278 mspytorch-cpu0.1021 mstenferro-trace0.02204 ms · 0.22x

grad_sum_lu_vjp dtype=f64 / threads=8 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1011 ms)jax-cpu0.01304 mspytorch-cpu0.1011 mstenferro-trace0.02182 ms · 0.22x

grad_sum_solve_vjp dtype=f64 / threads=4 / shape=32x32,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06424 ms)jax-cpu0.007778 mspytorch-cpu0.06424 mstenferro-trace0.01413 ms · 0.22x

grad_sum_lu_vjp dtype=f64 / threads=1 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06627 ms)jax-cpu0.01059 mspytorch-cpu0.06627 mstenferro-trace0.01458 ms · 0.22x

grad_sum_eigh_jvp dtype=f64 / threads=1 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04752 ms)jax-cpu0.005451 mspytorch-cpu0.04752 mstenferro-trace0.01087 ms · 0.23x

grad_sum_lu_vjp dtype=f64 / threads=4 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06943 ms)jax-cpu0.007555 mspytorch-cpu0.06943 mstenferro-trace0.01623 ms · 0.23x

grad_sum_eigh_jvp dtype=f64 / threads=4 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04869 ms)jax-cpu0.004659 mspytorch-cpu0.04869 mstenferro-trace0.01157 ms · 0.24x

grad_sum_eigh_vjp dtype=f64 / threads=1 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04083 ms)jax-cpu0.004758 mspytorch-cpu0.04083 mstenferro-trace0.009797 ms · 0.24x

grad_sum_lu_vjp dtype=f64 / threads=8 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1078 ms)jax-cpu0.0116 mspytorch-cpu0.1078 mstenferro-trace0.02591 ms · 0.24x

grad_sum_lu_jvp dtype=f64 / threads=8 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.2092 ms)jax-cpu0.06077 mspytorch-cpu0.2092 mstenferro-trace0.05122 ms · 0.24x

grad_sum_eigh_jvp dtype=f64 / threads=8 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07496 ms)jax-cpu0.007323 mspytorch-cpu0.07496 mstenferro-trace0.01845 ms · 0.25x

grad_sum_eigh_jvp dtype=f64 / threads=1 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05235 ms)jax-cpu0.009658 mspytorch-cpu0.05235 mstenferro-trace0.01289 ms · 0.25x

grad_sum_eigh_jvp dtype=f64 / threads=4 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04889 ms)jax-cpu0.005713 mspytorch-cpu0.04889 mstenferro-trace0.01235 ms · 0.25x

grad_sum_lu_jvp dtype=f64 / threads=1 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1038 ms)jax-cpu0.01988 mspytorch-cpu0.1038 mstenferro-trace0.02624 ms · 0.25x

grad_sum_eigh_vjp dtype=f64 / threads=1 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04114 ms)jax-cpu0.005863 mspytorch-cpu0.04114 mstenferro-trace0.01059 ms · 0.26x

grad_sum_eigh_jvp dtype=f64 / threads=8 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07605 ms)jax-cpu0.009068 mspytorch-cpu0.07605 mstenferro-trace0.01971 ms · 0.26x

grad_sum_svd_s_vjp dtype=f64 / threads=1 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05156 ms)jax-cpu0.01316 mspytorch-cpu0.05156 mstenferro-trace0.01372 ms · 0.27x

grad_sum_svd_s_vjp dtype=f64 / threads=4 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05382 ms)jax-cpu0.008874 mspytorch-cpu0.05382 mstenferro-trace0.01442 ms · 0.27x

grad_sum_eigh_vjp dtype=f64 / threads=4 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0415 ms)jax-cpu0.004723 mspytorch-cpu0.0415 mstenferro-trace0.01132 ms · 0.27x

grad_sum_eigh_jvp dtype=f64 / threads=4 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0525 ms)jax-cpu0.006109 mspytorch-cpu0.0525 mstenferro-trace0.01444 ms · 0.28x

grad_sum_svd_s_jvp dtype=f64 / threads=1 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.09999 ms)jax-cpu0.02973 mspytorch-cpu0.09999 mstenferro-trace0.02783 ms · 0.28x

grad_sum_lu_jvp dtype=f64 / threads=4 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1083 ms)jax-cpu0.02062 mspytorch-cpu0.1083 mstenferro-trace0.03032 ms · 0.28x

grad_sum_eigh_vjp dtype=f64 / threads=8 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06335 ms)jax-cpu0.007567 mspytorch-cpu0.06335 mstenferro-trace0.01777 ms · 0.28x

grad_sum_eigh_vjp dtype=f64 / threads=4 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0423 ms)jax-cpu0.006094 mspytorch-cpu0.0423 mstenferro-trace0.01189 ms · 0.28x

grad_sum_svd_s_vjp dtype=f64 / threads=8 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08112 ms)jax-cpu0.01388 mspytorch-cpu0.08112 mstenferro-trace0.02286 ms · 0.28x

grad_sum_svd_s_jvp dtype=f64 / threads=4 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1012 ms)jax-cpu0.02628 mspytorch-cpu0.1012 mstenferro-trace0.02871 ms · 0.28x

grad_sum_svd_s_jvp dtype=f64 / threads=8 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1593 ms)jax-cpu0.04136 mspytorch-cpu0.1593 mstenferro-trace0.04536 ms · 0.28x

grad_sum_eigh_vjp dtype=f64 / threads=1 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04364 ms)jax-cpu0.01026 mspytorch-cpu0.04364 mstenferro-trace0.01255 ms · 0.29x

grad_sum_eigh_jvp dtype=f64 / threads=8 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08046 ms)jax-cpu0.009905 mspytorch-cpu0.08046 mstenferro-trace0.02314 ms · 0.29x

grad_sum_eigh_vjp dtype=f64 / threads=8 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06393 ms)jax-cpu0.009453 mspytorch-cpu0.06393 mstenferro-trace0.01918 ms · 0.30x

grad_sum_qr_vjp dtype=f64 / threads=1 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05633 ms)jax-cpu0.005003 mspytorch-cpu0.05633 mstenferro-trace0.01737 ms · 0.31x

grad_sum_eigh_vjp dtype=f64 / threads=4 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.04491 ms)jax-cpu0.006796 mspytorch-cpu0.04491 mstenferro-trace0.01398 ms · 0.31x

grad_sum_qr_vjp dtype=f64 / threads=1 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05585 ms)jax-cpu0.005767 mspytorch-cpu0.05585 mstenferro-trace0.01764 ms · 0.32x

grad_sum_qr_vjp dtype=f64 / threads=1 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0571 ms)jax-cpu0.007746 mspytorch-cpu0.0571 mstenferro-trace0.01839 ms · 0.32x

grad_sum_eigh_vjp dtype=f64 / threads=8 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06724 ms)jax-cpu0.009869 mspytorch-cpu0.06724 mstenferro-trace0.02222 ms · 0.33x

grad_sum_qr_jvp dtype=f64 / threads=1 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05378 ms)jax-cpu0.005252 mspytorch-cpu0.05378 mstenferro-trace0.01785 ms · 0.33x

grad_sum_qr_vjp dtype=f64 / threads=4 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05945 ms)jax-cpu0.004944 mspytorch-cpu0.05945 mstenferro-trace0.01987 ms · 0.33x

grad_sum_eigh_jvp dtype=f64 / threads=1 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05976 ms)jax-cpu0.02009 mspytorch-cpu0.05976 mstenferro-trace0.02007 ms · 0.34x

grad_sum_qr_vjp dtype=f64 / threads=4 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05949 ms)jax-cpu0.005732 mspytorch-cpu0.05949 mstenferro-trace0.01999 ms · 0.34x

grad_sum_qr_jvp dtype=f64 / threads=1 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05494 ms)jax-cpu0.007978 mspytorch-cpu0.05494 mstenferro-trace0.01848 ms · 0.34x

grad_sum_lu_vjp dtype=f64 / threads=1 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08095 ms)jax-cpu0.01968 mspytorch-cpu0.08095 mstenferro-trace0.02736 ms · 0.34x

grad_sum_qr_jvp dtype=f64 / threads=1 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05363 ms)jax-cpu0.005535 mspytorch-cpu0.05363 mstenferro-trace0.01819 ms · 0.34x

grad_sum_qr_vjp dtype=f64 / threads=4 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0609 ms)jax-cpu0.006727 mspytorch-cpu0.0609 mstenferro-trace0.02074 ms · 0.34x

grad_sum_qr_vjp dtype=f64 / threads=1 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0629 ms)jax-cpu0.01168 mspytorch-cpu0.0629 mstenferro-trace0.02166 ms · 0.34x

grad_sum_qr_vjp dtype=f64 / threads=8 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.09 ms)jax-cpu0.007817 mspytorch-cpu0.09 mstenferro-trace0.03127 ms · 0.35x

grad_sum_eigh_jvp dtype=f64 / threads=4 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06113 ms)jax-cpu0.01652 mspytorch-cpu0.06113 mstenferro-trace0.02149 ms · 0.35x

grad_sum_qr_vjp dtype=f64 / threads=8 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.09035 ms)jax-cpu0.009078 mspytorch-cpu0.09035 mstenferro-trace0.03184 ms · 0.35x

grad_sum_qr_vjp dtype=f64 / threads=8 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.09327 ms)jax-cpu0.01076 mspytorch-cpu0.09327 mstenferro-trace0.03318 ms · 0.36x

grad_sum_qr_jvp dtype=f64 / threads=4 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0575 ms)jax-cpu0.005152 mspytorch-cpu0.0575 mstenferro-trace0.02056 ms · 0.36x

grad_sum_qr_jvp dtype=f64 / threads=1 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05984 ms)jax-cpu0.01198 mspytorch-cpu0.05984 mstenferro-trace0.02147 ms · 0.36x

grad_sum_qr_jvp dtype=f64 / threads=4 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05887 ms)jax-cpu0.007989 mspytorch-cpu0.05887 mstenferro-trace0.02117 ms · 0.36x

grad_sum_qr_vjp dtype=f64 / threads=4 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06707 ms)jax-cpu0.007211 mspytorch-cpu0.06707 mstenferro-trace0.02413 ms · 0.36x

grad_sum_qr_jvp dtype=f64 / threads=8 / shape=2x2

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08812 ms)jax-cpu0.00818 mspytorch-cpu0.08812 mstenferro-trace0.03191 ms · 0.36x

grad_sum_eigh_jvp dtype=f64 / threads=8 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0947 ms)jax-cpu0.02554 mspytorch-cpu0.0947 mstenferro-trace0.03447 ms · 0.36x

grad_sum_qr_jvp dtype=f64 / threads=4 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05629 ms)jax-cpu0.005921 mspytorch-cpu0.05629 mstenferro-trace0.02079 ms · 0.37x

grad_sum_qr_jvp dtype=f64 / threads=8 / shape=4x4

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08709 ms)jax-cpu0.009376 mspytorch-cpu0.08709 mstenferro-trace0.03231 ms · 0.37x

grad_sum_qr_jvp dtype=f64 / threads=8 / shape=8x8

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.09019 ms)jax-cpu0.01258 mspytorch-cpu0.09019 mstenferro-trace0.0337 ms · 0.37x

grad_sum_qr_jvp dtype=f64 / threads=4 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06424 ms)jax-cpu0.007592 mspytorch-cpu0.06424 mstenferro-trace0.02408 ms · 0.37x

grad_sum_qr_vjp dtype=f64 / threads=8 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1018 ms)jax-cpu0.01129 mspytorch-cpu0.1018 mstenferro-trace0.03843 ms · 0.38x

grad_sum_eigh_vjp dtype=f64 / threads=1 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05161 ms)jax-cpu0.0205 mspytorch-cpu0.05161 mstenferro-trace0.01977 ms · 0.38x

grad_sum_qr_jvp dtype=f64 / threads=8 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.09892 ms)jax-cpu0.01214 mspytorch-cpu0.09892 mstenferro-trace0.03836 ms · 0.39x

grad_sum_solve_vjp dtype=f64 / threads=1 / shape=1024x1024,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (36.808 ms)jax-cpu15.585 mspytorch-cpu36.808 mstenferro-trace14.401 ms · 0.39x

grad_sum_svd_s_vjp dtype=f64 / threads=1 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.06948 ms)jax-cpu0.03024 mspytorch-cpu0.06948 mstenferro-trace0.0274 ms · 0.39x

grad_sum_solve_vjp dtype=f64 / threads=1 / shape=512x512,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (5.240 ms)jax-cpu2.512 mspytorch-cpu5.240 mstenferro-trace2.077 ms · 0.40x

grad_sum_svd_s_vjp dtype=f64 / threads=4 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07023 ms)jax-cpu0.02644 mspytorch-cpu0.07023 mstenferro-trace0.02823 ms · 0.40x

grad_sum_eigh_vjp dtype=f64 / threads=4 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.05203 ms)jax-cpu0.01681 mspytorch-cpu0.05203 mstenferro-trace0.02116 ms · 0.41x

grad_sum_svd_s_vjp dtype=f64 / threads=8 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1082 ms)jax-cpu0.04174 mspytorch-cpu0.1082 mstenferro-trace0.04458 ms · 0.41x

grad_sum_eigh_vjp dtype=f64 / threads=8 / shape=16x16

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08097 ms)jax-cpu0.02579 mspytorch-cpu0.08097 mstenferro-trace0.03374 ms · 0.42x

grad_sum_lu_jvp dtype=f64 / threads=1 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (46.582 ms)jax-cpu18.784 mspytorch-cpu46.582 mstenferro-trace19.780 ms · 0.42x

grad_sum_lu_jvp dtype=f64 / threads=4 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (115.178 ms)jax-cpu84.976 mspytorch-cpu115.178 mstenferro-trace49.739 ms · 0.43x

grad_sum_qr_vjp dtype=f64 / threads=8 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1424 ms)jax-cpu0.04616 mspytorch-cpu0.1424 mstenferro-trace0.06149 ms · 0.43x

grad_sum_lu_vjp dtype=f64 / threads=4 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.0831 ms)jax-cpu0.02524 mspytorch-cpu0.0831 mstenferro-trace0.03685 ms · 0.44x

grad_sum_solve_vjp dtype=f64 / threads=1 / shape=256x256,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.7808 ms)jax-cpu0.3669 mspytorch-cpu0.7808 mstenferro-trace0.3499 ms · 0.45x

grad_sum_lu_vjp dtype=f64 / threads=8 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1352 ms)jax-cpu0.03378 mspytorch-cpu0.1352 mstenferro-trace0.06134 ms · 0.45x

grad_sum_qr_jvp dtype=f64 / threads=1 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07551 ms)jax-cpu0.02439 mspytorch-cpu0.07551 mstenferro-trace0.03465 ms · 0.46x

grad_sum_lu_jvp dtype=f64 / threads=1 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (311.117 ms)jax-cpu144.380 mspytorch-cpu311.117 mstenferro-trace143.633 ms · 0.46x

grad_sum_svd_s_jvp dtype=f64 / threads=1 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1656 ms)jax-cpu0.08003 mspytorch-cpu0.1656 mstenferro-trace0.07681 ms · 0.46x

grad_sum_qr_vjp dtype=f64 / threads=1 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07721 ms)jax-cpu0.02386 mspytorch-cpu0.07721 mstenferro-trace0.03585 ms · 0.46x

grad_sum_qr_jvp dtype=f64 / threads=8 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1298 ms)pytorch-cpu0.1298 msjax-cpu0.2488 mstenferro-trace0.06212 ms · 0.48x

grad_sum_qr_vjp dtype=f64 / threads=4 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08014 ms)jax-cpu0.02397 mspytorch-cpu0.08014 mstenferro-trace0.03911 ms · 0.49x

grad_sum_svd_s_jvp dtype=f64 / threads=4 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1723 ms)jax-cpu0.07748 mspytorch-cpu0.1723 mstenferro-trace0.08451 ms · 0.49x

grad_sum_svd_s_jvp dtype=f64 / threads=8 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.2711 ms)jax-cpu0.1226 mspytorch-cpu0.2711 mstenferro-trace0.1339 ms · 0.49x

grad_sum_lu_jvp dtype=f64 / threads=1 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (5.308 ms)jax-cpu2.528 mspytorch-cpu5.308 mstenferro-trace2.654 ms · 0.50x

grad_sum_qr_jvp dtype=f64 / threads=4 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.07801 ms)jax-cpu0.04606 mspytorch-cpu0.07801 mstenferro-trace0.0396 ms · 0.51x

grad_sum_eigh_jvp dtype=f64 / threads=1 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.09426 ms)jax-cpu0.05409 mspytorch-cpu0.09426 mstenferro-trace0.04835 ms · 0.51x

grad_sum_lu_jvp dtype=f64 / threads=4 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (18.516 ms)jax-cpu14.852 mspytorch-cpu18.516 mstenferro-trace9.787 ms · 0.53x

grad_sum_solve_vjp dtype=f64 / threads=4 / shape=512x512,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (1.677 ms)jax-cpu1.663 mspytorch-cpu1.677 mstenferro-trace0.9012 ms · 0.54x

grad_sum_eigh_jvp dtype=f64 / threads=4 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.09839 ms)jax-cpu0.05161 mspytorch-cpu0.09839 mstenferro-trace0.05398 ms · 0.55x

grad_sum_eigh_jvp dtype=f64 / threads=8 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1554 ms)jax-cpu0.08376 mspytorch-cpu0.1554 mstenferro-trace0.0854 ms · 0.55x

grad_sum_eigh_vjp dtype=f64 / threads=1 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08241 ms)jax-cpu0.05457 mspytorch-cpu0.08241 mstenferro-trace0.04781 ms · 0.58x

grad_sum_svd_s_vjp dtype=f64 / threads=1 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1278 ms)jax-cpu0.08024 mspytorch-cpu0.1278 mstenferro-trace0.0765 ms · 0.60x

grad_sum_eigh_vjp dtype=f64 / threads=4 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.08615 ms)jax-cpu0.05079 mspytorch-cpu0.08615 mstenferro-trace0.05388 ms · 0.63x

grad_sum_eigh_vjp dtype=f64 / threads=8 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1349 ms)jax-cpu0.0803 mspytorch-cpu0.1349 mstenferro-trace0.08512 ms · 0.63x

grad_sum_svd_s_vjp dtype=f64 / threads=4 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.1326 ms)jax-cpu0.07708 mspytorch-cpu0.1326 mstenferro-trace0.0838 ms · 0.63x

grad_sum_svd_s_vjp dtype=f64 / threads=8 / shape=32x32

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.208 ms)jax-cpu0.1224 mspytorch-cpu0.208 mstenferro-trace0.1331 ms · 0.64x

grad_sum_solve_jvp dtype=f64 / threads=1 / shape=256x256,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.5332 ms)jax-cpu0.3612 mspytorch-cpu0.5332 mstenferro-trace0.3488 ms · 0.65x

grad_sum_solve_jvp dtype=f64 / threads=1 / shape=512x512,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (3.175 ms)jax-cpu2.508 mspytorch-cpu3.175 mstenferro-trace2.088 ms · 0.66x

grad_sum_solve_jvp dtype=f64 / threads=1 / shape=1024x1024,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (22.067 ms)jax-cpu17.103 mspytorch-cpu22.067 mstenferro-trace14.832 ms · 0.67x

grad_sum_lu_jvp dtype=f64 / threads=8 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (105.859 ms)jax-cpu78.793 mspytorch-cpu105.859 mstenferro-trace72.732 ms · 0.69x

grad_sum_svd_s_jvp dtype=f64 / threads=1 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (73.323 ms)jax-cpu55.257 mspytorch-cpu73.323 mstenferro-trace52.643 ms · 0.72x

grad_sum_svd_s_jvp dtype=f64 / threads=4 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (191.763 ms)pytorch-cpu191.763 msjax-cpu214.261 mstenferro-trace137.813 ms · 0.72x

grad_sum_svd_s_jvp dtype=f64 / threads=8 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (212.593 ms)pytorch-cpu212.593 msjax-cpu286.415 mstenferro-trace153.806 ms · 0.72x

grad_sum_eigh_jvp dtype=f64 / threads=1 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (258.292 ms)jax-cpu191.724 mspytorch-cpu258.292 mstenferro-trace187.008 ms · 0.72x

grad_sum_svd_s_jvp dtype=f64 / threads=1 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (466.134 ms)jax-cpu351.224 mspytorch-cpu466.134 mstenferro-trace337.576 ms · 0.72x

grad_sum_eigh_jvp dtype=f64 / threads=4 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (89.330 ms)pytorch-cpu89.330 msjax-cpu105.188 mstenferro-trace65.816 ms · 0.74x

grad_sum_svd_s_jvp dtype=f64 / threads=4 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (34.944 ms)pytorch-cpu34.944 msjax-cpu43.837 mstenferro-trace26.240 ms · 0.75x

grad_sum_eigh_jvp dtype=f64 / threads=1 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (36.983 ms)jax-cpu28.897 mspytorch-cpu36.983 mstenferro-trace28.003 ms · 0.76x

grad_sum_qr_vjp dtype=f64 / threads=4 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (13.951 ms)pytorch-cpu13.951 msjax-cpu19.929 mstenferro-trace10.644 ms · 0.76x

grad_sum_svd_s_jvp dtype=f64 / threads=1 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (9.786 ms)jax-cpu7.833 mspytorch-cpu9.786 mstenferro-trace7.617 ms · 0.78x

grad_sum_lu_jvp dtype=f64 / threads=8 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (17.580 ms)pytorch-cpu17.580 msjax-cpu20.051 mstenferro-trace13.972 ms · 0.79x

grad_sum_eigh_jvp dtype=f64 / threads=1 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (5.343 ms)jax-cpu4.439 mspytorch-cpu5.343 mstenferro-trace4.286 ms · 0.80x

grad_sum_qr_vjp dtype=f64 / threads=1 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (33.120 ms)jax-cpu26.300 mspytorch-cpu33.120 mstenferro-trace26.629 ms · 0.80x

grad_sum_lu_vjp dtype=f64 / threads=1 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (23.829 ms)jax-cpu18.262 mspytorch-cpu23.829 mstenferro-trace19.376 ms · 0.81x

grad_sum_solve_jvp dtype=f64 / threads=4 / shape=512x512,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (1.121 ms)pytorch-cpu1.121 msjax-cpu1.635 mstenferro-trace0.9285 ms · 0.83x

grad_sum_svd_s_jvp dtype=f64 / threads=4 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (6.379 ms)pytorch-cpu6.379 msjax-cpu7.250 mstenferro-trace5.343 ms · 0.84x

grad_sum_qr_jvp dtype=f64 / threads=1 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (33.753 ms)jax-cpu26.118 mspytorch-cpu33.753 mstenferro-trace28.479 ms · 0.84x

grad_sum_qr_jvp dtype=f64 / threads=1 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (220.816 ms)jax-cpu199.602 mspytorch-cpu220.816 mstenferro-trace186.426 ms · 0.84x

grad_sum_svd_s_vjp dtype=f64 / threads=4 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (31.007 ms)pytorch-cpu31.007 msjax-cpu43.314 mstenferro-trace26.587 ms · 0.86x

grad_sum_lu_vjp dtype=f64 / threads=1 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (165.914 ms)jax-cpu144.087 mspytorch-cpu165.914 mstenferro-trace143.876 ms · 0.87x

grad_sum_lu_vjp dtype=f64 / threads=4 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (8.289 ms)pytorch-cpu8.289 msjax-cpu12.981 mstenferro-trace7.225 ms · 0.87x

grad_sum_svd_s_vjp dtype=f64 / threads=8 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (176.369 ms)pytorch-cpu176.369 msjax-cpu293.920 mstenferro-trace154.665 ms · 0.88x

grad_sum_qr_vjp dtype=f64 / threads=1 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (209.772 ms)jax-cpu197.539 mspytorch-cpu209.772 mstenferro-trace184.472 ms · 0.88x

grad_sum_svd_s_vjp dtype=f64 / threads=1 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (58.354 ms)jax-cpu55.221 mspytorch-cpu58.354 mstenferro-trace52.158 ms · 0.89x

grad_sum_qr_vjp dtype=f64 / threads=1 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (4.008 ms)jax-cpu3.486 mspytorch-cpu4.008 mstenferro-trace3.610 ms · 0.90x

grad_sum_svd_s_vjp dtype=f64 / threads=4 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (151.604 ms)pytorch-cpu151.604 msjax-cpu215.124 mstenferro-trace138.654 ms · 0.91x

grad_sum_qr_jvp dtype=f64 / threads=1 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (3.996 ms)jax-cpu3.515 mspytorch-cpu3.996 mstenferro-trace3.672 ms · 0.92x

grad_sum_svd_s_vjp dtype=f64 / threads=1 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (8.183 ms)jax-cpu7.823 mspytorch-cpu8.183 mstenferro-trace7.606 ms · 0.93x

grad_sum_lu_vjp dtype=f64 / threads=4 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (55.290 ms)pytorch-cpu55.290 msjax-cpu80.030 mstenferro-trace51.512 ms · 0.93x

grad_sum_solve_vjp dtype=f64 / threads=4 / shape=1024x1024,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (10.406 ms)jax-cpu8.167 mspytorch-cpu10.406 mstenferro-trace9.737 ms · 0.94x

grad_sum_lu_vjp dtype=f64 / threads=1 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.819 ms)jax-cpu2.448 mspytorch-cpu2.819 mstenferro-trace2.672 ms · 0.95x

grad_sum_qr_vjp dtype=f64 / threads=4 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (72.653 ms)pytorch-cpu72.653 msjax-cpu112.952 mstenferro-trace69.388 ms · 0.96x

grad_sum_qr_jvp dtype=f64 / threads=4 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (73.734 ms)pytorch-cpu73.734 msjax-cpu122.938 mstenferro-trace70.481 ms · 0.96x

grad_sum_qr_jvp dtype=f64 / threads=8 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (75.625 ms)pytorch-cpu75.625 msjax-cpu130.987 mstenferro-trace72.724 ms · 0.96x

grad_sum_qr_jvp dtype=f64 / threads=4 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (12.310 ms)pytorch-cpu12.310 msjax-cpu18.769 mstenferro-trace11.850 ms · 0.96x

grad_sum_svd_s_vjp dtype=f64 / threads=1 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (345.597 ms)pytorch-cpu345.597 msjax-cpu358.294 mstenferro-trace337.412 ms · 0.98x

grad_sum_eigh_vjp dtype=f64 / threads=1 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (28.174 ms)pytorch-cpu28.174 msjax-cpu28.650 mstenferro-trace27.836 ms · 0.99x

grad_sum_eigh_vjp dtype=f64 / threads=1 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (4.327 ms)pytorch-cpu4.327 msjax-cpu4.444 mstenferro-trace4.295 ms · 0.99x

grad_sum_eigh_vjp dtype=f64 / threads=4 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (11.005 ms)pytorch-cpu11.005 msjax-cpu21.794 mstenferro-trace11.145 ms · 1.01x

grad_sum_svd_s_vjp dtype=f64 / threads=4 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (5.880 ms)pytorch-cpu5.880 msjax-cpu7.402 mstenferro-trace6.016 ms · 1.02x

grad_sum_eigh_vjp dtype=f64 / threads=1 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (177.132 ms)pytorch-cpu177.132 msjax-cpu190.045 mstenferro-trace188.994 ms · 1.07x

grad_sum_eigh_vjp dtype=f64 / threads=4 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (60.836 ms)pytorch-cpu60.836 msjax-cpu107.397 mstenferro-trace68.289 ms · 1.12x

grad_sum_eigh_vjp dtype=f64 / threads=8 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (61.875 ms)pytorch-cpu61.875 msjax-cpu127.451 mstenferro-trace70.888 ms · 1.15x

grad_sum_solve_vjp dtype=f64 / threads=4 / shape=256x256,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.3436 ms)jax-cpu0.3152 mspytorch-cpu0.3436 mstenferro-trace0.447 ms · 1.30x

grad_sum_solve_vjp dtype=f64 / threads=8 / shape=512x512,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (1.984 ms)pytorch-cpu1.984 msjax-cpu2.241 mstenferro-trace2.643 ms · 1.33x

grad_sum_lu_jvp dtype=f64 / threads=8 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.608 ms)pytorch-cpu2.608 msjax-cpu3.972 mstenferro-trace3.673 ms · 1.41x

grad_sum_svd_s_jvp dtype=f64 / threads=8 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (42.266 ms)pytorch-cpu42.266 msjax-cpu64.028 mstenferro-trace61.152 ms · 1.45x

grad_sum_svd_s_vjp dtype=f64 / threads=8 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (40.990 ms)pytorch-cpu40.990 msjax-cpu67.046 mstenferro-trace61.142 ms · 1.49x

grad_sum_solve_vjp dtype=f64 / threads=8 / shape=1024x1024,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (10.180 ms)jax-cpu8.984 mspytorch-cpu10.180 mstenferro-trace15.299 ms · 1.50x

grad_sum_solve_jvp dtype=f64 / threads=8 / shape=512x512,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (1.411 ms)pytorch-cpu1.411 msjax-cpu2.285 mstenferro-trace2.128 ms · 1.51x

grad_sum_lu_vjp dtype=f64 / threads=8 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (52.381 ms)pytorch-cpu52.381 msjax-cpu87.642 mstenferro-trace80.207 ms · 1.53x

grad_sum_solve_jvp dtype=f64 / threads=4 / shape=256x256,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.2954 ms)pytorch-cpu0.2954 msjax-cpu0.2981 mstenferro-trace0.4533 ms · 1.53x

grad_sum_qr_vjp dtype=f64 / threads=8 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (13.993 ms)pytorch-cpu13.993 msjax-cpu28.212 mstenferro-trace21.594 ms · 1.54x

grad_sum_solve_jvp dtype=f64 / threads=4 / shape=1024x1024,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (5.662 ms)pytorch-cpu5.662 msjax-cpu9.059 mstenferro-trace8.963 ms · 1.58x

grad_sum_svd_s_jvp dtype=f64 / threads=8 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (9.340 ms)pytorch-cpu9.340 msjax-cpu12.494 mstenferro-trace14.975 ms · 1.60x

grad_sum_lu_vjp dtype=f64 / threads=8 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (8.620 ms)pytorch-cpu8.620 msjax-cpu16.255 mstenferro-trace13.830 ms · 1.60x

grad_sum_eigh_jvp dtype=f64 / threads=8 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (88.704 ms)pytorch-cpu88.704 msjax-cpu131.017 mstenferro-trace145.846 ms · 1.64x

grad_sum_lu_jvp dtype=f64 / threads=4 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.229 ms)pytorch-cpu2.229 msjax-cpu2.356 mstenferro-trace3.988 ms · 1.79x

grad_sum_svd_s_vjp dtype=f64 / threads=8 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (8.582 ms)pytorch-cpu8.582 msjax-cpu11.971 mstenferro-trace15.362 ms · 1.79x

grad_sum_solve_jvp dtype=f64 / threads=8 / shape=256x256,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.9209 ms)jax-cpu0.3476 mspytorch-cpu0.9209 mstenferro-trace1.771 ms · 1.92x

grad_sum_qr_jvp dtype=f64 / threads=8 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (11.916 ms)pytorch-cpu11.916 msjax-cpu27.349 mstenferro-trace26.142 ms · 2.19x

grad_sum_eigh_jvp dtype=f64 / threads=4 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (14.159 ms)pytorch-cpu14.159 msjax-cpu21.770 mstenferro-trace31.235 ms · 2.21x

grad_sum_qr_vjp dtype=f64 / threads=8 / shape=1024x1024

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (72.048 ms)pytorch-cpu72.048 msjax-cpu126.977 mstenferro-trace162.127 ms · 2.25x

grad_sum_lu_vjp dtype=f64 / threads=4 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (1.082 ms)pytorch-cpu1.082 msjax-cpu1.845 mstenferro-trace2.527 ms · 2.33x

grad_sum_eigh_vjp dtype=f64 / threads=4 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.055 ms)pytorch-cpu2.055 msjax-cpu4.185 mstenferro-trace5.192 ms · 2.53x

grad_sum_eigh_jvp dtype=f64 / threads=8 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (13.546 ms)pytorch-cpu13.546 msjax-cpu33.056 mstenferro-trace39.714 ms · 2.93x

grad_sum_solve_vjp dtype=f64 / threads=8 / shape=256x256,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (0.5535 ms)jax-cpu0.3543 mspytorch-cpu0.5535 mstenferro-trace1.767 ms · 3.19x

grad_sum_lu_vjp dtype=f64 / threads=8 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (1.352 ms)pytorch-cpu1.352 msjax-cpu3.727 mstenferro-trace5.358 ms · 3.96x

grad_sum_qr_jvp dtype=f64 / threads=4 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (1.668 ms)pytorch-cpu1.668 msjax-cpu3.324 mstenferro-trace7.221 ms · 4.33x

grad_sum_qr_vjp dtype=f64 / threads=4 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (1.795 ms)pytorch-cpu1.795 msjax-cpu3.417 mstenferro-trace8.337 ms · 4.64x

grad_sum_eigh_jvp dtype=f64 / threads=4 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.371 ms)pytorch-cpu2.371 msjax-cpu4.329 mstenferro-trace11.288 ms · 4.76x

grad_sum_solve_jvp dtype=f64 / threads=8 / shape=1024x1024,rhs=1

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (6.222 ms)pytorch-cpu6.222 msjax-cpu9.895 mstenferro-trace32.936 ms · 5.29x

grad_sum_eigh_vjp dtype=f64 / threads=8 / shape=512x512

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (10.593 ms)pytorch-cpu10.593 msjax-cpu30.960 mstenferro-trace56.452 ms · 5.33x

grad_sum_qr_vjp dtype=f64 / threads=8 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.294 ms)pytorch-cpu2.294 msjax-cpu6.924 mstenferro-trace12.632 ms · 5.51x

grad_sum_qr_jvp dtype=f64 / threads=8 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.129 ms)pytorch-cpu2.129 msjax-cpu6.683 mstenferro-trace11.764 ms · 5.53x

grad_sum_eigh_jvp dtype=f64 / threads=8 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.969 ms)pytorch-cpu2.969 msjax-cpu7.389 mstenferro-trace23.445 ms · 7.90x

grad_sum_eigh_vjp dtype=f64 / threads=8 / shape=256x256

bar = median time (log scale) · shorter (left) is faster · dashed line = PyTorch (2.624 ms)pytorch-cpu2.624 msjax-cpu7.439 mstenferro-trace23.683 ms · 9.02x

Original report

CPU Linalg JVP/VJP Benchmark Results

Generated from the explicit runs below; each section retains its own provenance and thread settings.

Threads: 1

Source report: data/results/zen5-cpu/cpu/einsum/20261027_231715/linalg_jvp_vjp_report.md.

Latest run: ./scripts/run_all.sh 1.

Derived from the CPU ops CSV under data/results/zen5-cpu/cpu/einsum/20261027_231715.

CPU Information

Thread Environment

Tenferro CPU BLAS Backend

Python Backend Providers

Linalg JVP/VJP Benchmark Items

Median ± IQR (ms). Missing backends are shown as -.

tenferro-rs JVP/VJP use trace-mode AdContext; PyTorch uses torch.func.jvp / vjp; JAX uses jax.jvp / jax.vjp.

suite benchmark dtype threads shape tenferro-rs trace mode (ms) PyTorch Python (ms) JAX Python (XLA CPU) (ms)
large grad_sum_eigh_jvp f64 1 1024x1024 187.008 ± 0.705 258.292 ± 3.675 191.724 ± 0.427
large grad_sum_eigh_jvp f64 1 256x256 4.286 ± 0.009 5.343 ± 0.010 4.439 ± 0.007
large grad_sum_eigh_jvp f64 1 512x512 28.003 ± 0.035 36.983 ± 0.126 28.897 ± 0.042
large grad_sum_eigh_vjp f64 1 1024x1024 188.994 ± 0.537 177.132 ± 0.839 190.045 ± 0.245
large grad_sum_eigh_vjp f64 1 256x256 4.295 ± 0.003 4.327 ± 0.013 4.444 ± 0.010
large grad_sum_eigh_vjp f64 1 512x512 27.836 ± 0.037 28.174 ± 0.086 28.650 ± 0.097
large grad_sum_lu_jvp f64 1 1024x1024 143.633 ± 0.723 311.117 ± 0.684 144.380 ± 1.637
large grad_sum_lu_jvp f64 1 256x256 2.654 ± 0.005 5.308 ± 0.081 2.528 ± 0.004
large grad_sum_lu_jvp f64 1 512x512 19.780 ± 0.127 46.582 ± 0.233 18.784 ± 0.037
large grad_sum_lu_vjp f64 1 1024x1024 143.876 ± 0.500 165.914 ± 1.192 144.087 ± 0.727
large grad_sum_lu_vjp f64 1 256x256 2.672 ± 0.002 2.819 ± 0.010 2.448 ± 0.003
large grad_sum_lu_vjp f64 1 512x512 19.376 ± 0.323 23.829 ± 0.127 18.262 ± 0.043
large grad_sum_qr_jvp f64 1 1024x1024 186.426 ± 0.292 220.816 ± 2.519 199.602 ± 1.597
large grad_sum_qr_jvp f64 1 256x256 3.672 ± 0.007 3.996 ± 0.023 3.515 ± 0.004
large grad_sum_qr_jvp f64 1 512x512 28.479 ± 0.134 33.753 ± 0.129 26.118 ± 0.064
large grad_sum_qr_vjp f64 1 1024x1024 184.472 ± 0.363 209.772 ± 2.942 197.539 ± 0.428
large grad_sum_qr_vjp f64 1 256x256 3.610 ± 0.008 4.008 ± 0.010 3.486 ± 0.007
large grad_sum_qr_vjp f64 1 512x512 26.629 ± 0.044 33.120 ± 0.478 26.300 ± 0.050
large grad_sum_solve_jvp f64 1 1024x1024,rhs=1 14.832 ± 0.062 22.067 ± 1.072 17.103 ± 0.106
large grad_sum_solve_jvp f64 1 256x256,rhs=1 0.349 ± 0.004 0.533 ± 0.007 0.361 ± 0.001
large grad_sum_solve_jvp f64 1 512x512,rhs=1 2.088 ± 0.007 3.175 ± 0.014 2.508 ± 0.005
large grad_sum_solve_vjp f64 1 1024x1024,rhs=1 14.401 ± 0.065 36.808 ± 0.424 15.585 ± 0.052
large grad_sum_solve_vjp f64 1 256x256,rhs=1 0.350 ± 0.001 0.781 ± 0.009 0.367 ± 0.002
large grad_sum_solve_vjp f64 1 512x512,rhs=1 2.077 ± 0.017 5.240 ± 0.008 2.512 ± 0.007
large grad_sum_svd_s_jvp f64 1 1024x1024 337.576 ± 6.623 466.134 ± 1.813 351.224 ± 0.688
large grad_sum_svd_s_jvp f64 1 256x256 7.617 ± 0.013 9.786 ± 0.014 7.833 ± 0.016
large grad_sum_svd_s_jvp f64 1 512x512 52.643 ± 0.257 73.323 ± 0.836 55.257 ± 0.106
large grad_sum_svd_s_vjp f64 1 1024x1024 337.412 ± 0.788 345.597 ± 2.802 358.294 ± 0.440
large grad_sum_svd_s_vjp f64 1 256x256 7.606 ± 0.034 8.183 ± 0.015 7.823 ± 0.011
large grad_sum_svd_s_vjp f64 1 512x512 52.158 ± 0.384 58.354 ± 0.212 55.221 ± 0.160
small grad_sum_eigh_jvp f64 1 16x16 0.020 ± 0.000 0.060 ± 0.001 0.020 ± 0.000
small grad_sum_eigh_jvp f64 1 2x2 0.010 ± 0.000 0.047 ± 0.001 0.005 ± 0.000
small grad_sum_eigh_jvp f64 1 32x32 0.048 ± 0.000 0.094 ± 0.001 0.054 ± 0.000
small grad_sum_eigh_jvp f64 1 4x4 0.011 ± 0.000 0.048 ± 0.000 0.005 ± 0.000
small grad_sum_eigh_jvp f64 1 8x8 0.013 ± 0.000 0.052 ± 0.001 0.010 ± 0.000
small grad_sum_eigh_vjp f64 1 16x16 0.020 ± 0.000 0.052 ± 0.000 0.020 ± 0.000
small grad_sum_eigh_vjp f64 1 2x2 0.010 ± 0.000 0.041 ± 0.000 0.005 ± 0.000
small grad_sum_eigh_vjp f64 1 32x32 0.048 ± 0.000 0.082 ± 0.000 0.055 ± 0.000
small grad_sum_eigh_vjp f64 1 4x4 0.011 ± 0.000 0.041 ± 0.000 0.006 ± 0.000
small grad_sum_eigh_vjp f64 1 8x8 0.013 ± 0.000 0.044 ± 0.000 0.010 ± 0.000
small grad_sum_lu_jvp f64 1 16x16 0.015 ± 0.000 0.083 ± 0.001 0.010 ± 0.000
small grad_sum_lu_jvp f64 1 2x2 0.012 ± 0.000 0.076 ± 0.001 0.005 ± 0.000
small grad_sum_lu_jvp f64 1 32x32 0.026 ± 0.000 0.104 ± 0.001 0.020 ± 0.000
small grad_sum_lu_jvp f64 1 4x4 0.012 ± 0.000 0.076 ± 0.000 0.005 ± 0.000
small grad_sum_lu_jvp f64 1 8x8 0.013 ± 0.000 0.077 ± 0.001 0.008 ± 0.000
small grad_sum_lu_vjp f64 1 16x16 0.015 ± 0.000 0.066 ± 0.001 0.011 ± 0.000
small grad_sum_lu_vjp f64 1 2x2 0.012 ± 0.000 0.061 ± 0.000 0.005 ± 0.000
small grad_sum_lu_vjp f64 1 32x32 0.027 ± 0.000 0.081 ± 0.001 0.020 ± 0.000
small grad_sum_lu_vjp f64 1 4x4 0.012 ± 0.000 0.061 ± 0.001 0.006 ± 0.000
small grad_sum_lu_vjp f64 1 8x8 0.012 ± 0.000 0.062 ± 0.000 0.008 ± 0.000
small grad_sum_qr_jvp f64 1 16x16 0.021 ± 0.000 0.060 ± 0.000 0.012 ± 0.000
small grad_sum_qr_jvp f64 1 2x2 0.018 ± 0.000 0.054 ± 0.001 0.005 ± 0.000
small grad_sum_qr_jvp f64 1 32x32 0.035 ± 0.000 0.076 ± 0.001 0.024 ± 0.000
small grad_sum_qr_jvp f64 1 4x4 0.018 ± 0.000 0.054 ± 0.000 0.006 ± 0.000
small grad_sum_qr_jvp f64 1 8x8 0.018 ± 0.000 0.055 ± 0.000 0.008 ± 0.000
small grad_sum_qr_vjp f64 1 16x16 0.022 ± 0.000 0.063 ± 0.000 0.012 ± 0.000
small grad_sum_qr_vjp f64 1 2x2 0.017 ± 0.000 0.056 ± 0.000 0.005 ± 0.000
small grad_sum_qr_vjp f64 1 32x32 0.036 ± 0.000 0.077 ± 0.000 0.024 ± 0.000
small grad_sum_qr_vjp f64 1 4x4 0.018 ± 0.000 0.056 ± 0.000 0.006 ± 0.000
small grad_sum_qr_vjp f64 1 8x8 0.018 ± 0.000 0.057 ± 0.000 0.008 ± 0.000
small grad_sum_solve_jvp f64 1 16x16,rhs=1 0.009 ± 0.000 0.129 ± 0.001 0.007 ± 0.000
small grad_sum_solve_jvp f64 1 2x2,rhs=1 0.008 ± 0.000 0.124 ± 0.001 0.005 ± 0.000
small grad_sum_solve_jvp f64 1 32x32,rhs=1 0.013 ± 0.000 0.135 ± 0.001 0.012 ± 0.000
small grad_sum_solve_jvp f64 1 4x4,rhs=1 0.008 ± 0.000 0.124 ± 0.001 0.005 ± 0.000
small grad_sum_solve_jvp f64 1 8x8,rhs=1 0.008 ± 0.000 0.124 ± 0.001 0.006 ± 0.000
small grad_sum_solve_vjp f64 1 16x16,rhs=1 0.009 ± 0.000 0.057 ± 0.001 0.008 ± 0.000
small grad_sum_solve_vjp f64 1 2x2,rhs=1 0.008 ± 0.000 0.054 ± 0.000 0.006 ± 0.000
small grad_sum_solve_vjp f64 1 32x32,rhs=1 0.012 ± 0.000 0.064 ± 0.001 0.014 ± 0.000
small grad_sum_solve_vjp f64 1 4x4,rhs=1 0.008 ± 0.000 0.053 ± 0.001 0.006 ± 0.000
small grad_sum_solve_vjp f64 1 8x8,rhs=1 0.008 ± 0.000 0.054 ± 0.000 0.006 ± 0.000
small grad_sum_svd_s_jvp f64 1 16x16 0.028 ± 0.000 0.100 ± 0.001 0.030 ± 0.000
small grad_sum_svd_s_jvp f64 1 2x2 0.007 ± 0.000 0.071 ± 0.001 0.005 ± 0.000
small grad_sum_svd_s_jvp f64 1 32x32 0.077 ± 0.000 0.166 ± 0.002 0.080 ± 0.000
small grad_sum_svd_s_jvp f64 1 4x4 0.009 ± 0.000 0.072 ± 0.001 0.007 ± 0.000
small grad_sum_svd_s_jvp f64 1 8x8 0.014 ± 0.000 0.080 ± 0.001 0.013 ± 0.000
small grad_sum_svd_s_vjp f64 1 16x16 0.027 ± 0.000 0.069 ± 0.001 0.030 ± 0.000
small grad_sum_svd_s_vjp f64 1 2x2 0.007 ± 0.000 0.044 ± 0.000 0.005 ± 0.000
small grad_sum_svd_s_vjp f64 1 32x32 0.077 ± 0.000 0.128 ± 0.001 0.080 ± 0.000
small grad_sum_svd_s_vjp f64 1 4x4 0.008 ± 0.000 0.046 ± 0.000 0.007 ± 0.000
small grad_sum_svd_s_vjp f64 1 8x8 0.014 ± 0.000 0.052 ± 0.000 0.013 ± 0.000

Loss Definitions

Threads: 4

Source report: data/results/zen5-cpu/cpu/einsum/20261027_235042/linalg_jvp_vjp_report.md.

Latest run: ./scripts/run_all.sh 4.

Derived from the CPU ops CSV under data/results/zen5-cpu/cpu/einsum/20261027_235042.

CPU Information

Thread Environment

Tenferro CPU BLAS Backend

Python Backend Providers

Linalg JVP/VJP Benchmark Items

Median ± IQR (ms). Missing backends are shown as -.

tenferro-rs JVP/VJP use trace-mode AdContext; PyTorch uses torch.func.jvp / vjp; JAX uses jax.jvp / jax.vjp.

suite benchmark dtype threads shape tenferro-rs trace mode (ms) PyTorch Python (ms) JAX Python (XLA CPU) (ms)
large grad_sum_eigh_jvp f64 4 1024x1024 65.816 ± 3.257 89.330 ± 1.765 105.188 ± 6.386
large grad_sum_eigh_jvp f64 4 256x256 11.288 ± 0.060 2.371 ± 0.015 4.329 ± 0.250
large grad_sum_eigh_jvp f64 4 512x512 31.235 ± 0.298 14.159 ± 0.046 21.770 ± 2.478
large grad_sum_eigh_vjp f64 4 1024x1024 68.289 ± 0.484 60.836 ± 0.348 107.397 ± 5.921
large grad_sum_eigh_vjp f64 4 256x256 5.192 ± 0.017 2.055 ± 0.012 4.185 ± 0.237
large grad_sum_eigh_vjp f64 4 512x512 11.145 ± 3.104 11.005 ± 0.052 21.794 ± 3.088
large grad_sum_lu_jvp f64 4 1024x1024 49.739 ± 0.263 115.178 ± 0.901 84.976 ± 6.681
large grad_sum_lu_jvp f64 4 256x256 3.988 ± 0.017 2.229 ± 0.032 2.356 ± 0.490
large grad_sum_lu_jvp f64 4 512x512 9.787 ± 0.070 18.516 ± 0.194 14.852 ± 2.703
large grad_sum_lu_vjp f64 4 1024x1024 51.512 ± 0.269 55.290 ± 0.343 80.030 ± 6.903
large grad_sum_lu_vjp f64 4 256x256 2.527 ± 0.015 1.082 ± 0.020 1.845 ± 0.322
large grad_sum_lu_vjp f64 4 512x512 7.225 ± 0.090 8.289 ± 0.085 12.981 ± 2.093
large grad_sum_qr_jvp f64 4 1024x1024 70.481 ± 39.705 73.734 ± 0.357 122.938 ± 14.901
large grad_sum_qr_jvp f64 4 256x256 7.221 ± 0.043 1.668 ± 0.008 3.324 ± 0.759
large grad_sum_qr_jvp f64 4 512x512 11.850 ± 0.044 12.310 ± 0.039 18.769 ± 3.611
large grad_sum_qr_vjp f64 4 1024x1024 69.388 ± 1.124 72.653 ± 0.361 112.952 ± 6.229
large grad_sum_qr_vjp f64 4 256x256 8.337 ± 1.216 1.795 ± 0.037 3.417 ± 0.476
large grad_sum_qr_vjp f64 4 512x512 10.644 ± 0.059 13.951 ± 0.067 19.929 ± 4.984
large grad_sum_solve_jvp f64 4 1024x1024,rhs=1 8.963 ± 0.091 5.662 ± 0.070 9.059 ± 0.308
large grad_sum_solve_jvp f64 4 256x256,rhs=1 0.453 ± 0.006 0.295 ± 0.068 0.298 ± 0.010
large grad_sum_solve_jvp f64 4 512x512,rhs=1 0.928 ± 0.004 1.121 ± 2.991 1.635 ± 0.013
large grad_sum_solve_vjp f64 4 1024x1024,rhs=1 9.737 ± 0.186 10.406 ± 0.089 8.167 ± 0.046
large grad_sum_solve_vjp f64 4 256x256,rhs=1 0.447 ± 0.003 0.344 ± 0.009 0.315 ± 0.011
large grad_sum_solve_vjp f64 4 512x512,rhs=1 0.901 ± 0.002 1.677 ± 2.995 1.663 ± 0.009
large grad_sum_svd_s_jvp f64 4 1024x1024 137.813 ± 0.616 191.763 ± 1.988 214.261 ± 5.431
large grad_sum_svd_s_jvp f64 4 256x256 5.343 ± 0.010 6.379 ± 0.020 7.250 ± 0.131
large grad_sum_svd_s_jvp f64 4 512x512 26.240 ± 0.117 34.944 ± 0.152 43.837 ± 2.596
large grad_sum_svd_s_vjp f64 4 1024x1024 138.654 ± 0.909 151.604 ± 1.104 215.124 ± 12.100
large grad_sum_svd_s_vjp f64 4 256x256 6.016 ± 0.236 5.880 ± 0.013 7.402 ± 0.099
large grad_sum_svd_s_vjp f64 4 512x512 26.587 ± 0.321 31.007 ± 0.125 43.314 ± 1.597
small grad_sum_eigh_jvp f64 4 16x16 0.021 ± 0.000 0.061 ± 0.001 0.017 ± 0.000
small grad_sum_eigh_jvp f64 4 2x2 0.012 ± 0.000 0.049 ± 0.001 0.005 ± 0.000
small grad_sum_eigh_jvp f64 4 32x32 0.054 ± 0.000 0.098 ± 0.001 0.052 ± 0.005
small grad_sum_eigh_jvp f64 4 4x4 0.012 ± 0.000 0.049 ± 0.001 0.006 ± 0.000
small grad_sum_eigh_jvp f64 4 8x8 0.014 ± 0.000 0.052 ± 0.001 0.006 ± 0.000
small grad_sum_eigh_vjp f64 4 16x16 0.021 ± 0.000 0.052 ± 0.000 0.017 ± 0.000
small grad_sum_eigh_vjp f64 4 2x2 0.011 ± 0.000 0.041 ± 0.000 0.005 ± 0.000
small grad_sum_eigh_vjp f64 4 32x32 0.054 ± 0.000 0.086 ± 0.000 0.051 ± 0.000
small grad_sum_eigh_vjp f64 4 4x4 0.012 ± 0.000 0.042 ± 0.000 0.006 ± 0.000
small grad_sum_eigh_vjp f64 4 8x8 0.014 ± 0.000 0.045 ± 0.000 0.007 ± 0.000
small grad_sum_lu_jvp f64 4 16x16 0.017 ± 0.000 0.087 ± 0.001 0.008 ± 0.000
small grad_sum_lu_jvp f64 4 2x2 0.014 ± 0.000 0.082 ± 0.001 0.005 ± 0.000
small grad_sum_lu_jvp f64 4 32x32 0.030 ± 0.000 0.108 ± 0.001 0.021 ± 0.018
small grad_sum_lu_jvp f64 4 4x4 0.014 ± 0.000 0.081 ± 0.001 0.006 ± 0.000
small grad_sum_lu_jvp f64 4 8x8 0.015 ± 0.000 0.083 ± 0.001 0.009 ± 0.000
small grad_sum_lu_vjp f64 4 16x16 0.016 ± 0.000 0.069 ± 0.001 0.008 ± 0.000
small grad_sum_lu_vjp f64 4 2x2 0.013 ± 0.000 0.065 ± 0.001 0.005 ± 0.000
small grad_sum_lu_vjp f64 4 32x32 0.037 ± 0.000 0.083 ± 0.001 0.025 ± 0.015
small grad_sum_lu_vjp f64 4 4x4 0.013 ± 0.000 0.065 ± 0.001 0.006 ± 0.000
small grad_sum_lu_vjp f64 4 8x8 0.014 ± 0.000 0.066 ± 0.000 0.008 ± 0.000
small grad_sum_qr_jvp f64 4 16x16 0.024 ± 0.000 0.064 ± 0.001 0.008 ± 0.000
small grad_sum_qr_jvp f64 4 2x2 0.021 ± 0.000 0.058 ± 0.001 0.005 ± 0.000
small grad_sum_qr_jvp f64 4 32x32 0.040 ± 0.000 0.078 ± 0.001 0.046 ± 0.125
small grad_sum_qr_jvp f64 4 4x4 0.021 ± 0.000 0.056 ± 0.001 0.006 ± 0.000
small grad_sum_qr_jvp f64 4 8x8 0.021 ± 0.000 0.059 ± 0.001 0.008 ± 0.000
small grad_sum_qr_vjp f64 4 16x16 0.024 ± 0.000 0.067 ± 0.002 0.007 ± 0.000
small grad_sum_qr_vjp f64 4 2x2 0.020 ± 0.000 0.059 ± 0.000 0.005 ± 0.000
small grad_sum_qr_vjp f64 4 32x32 0.039 ± 0.000 0.080 ± 0.001 0.024 ± 0.006
small grad_sum_qr_vjp f64 4 4x4 0.020 ± 0.000 0.059 ± 0.001 0.006 ± 0.000
small grad_sum_qr_vjp f64 4 8x8 0.021 ± 0.000 0.061 ± 0.000 0.007 ± 0.000
small grad_sum_solve_jvp f64 4 16x16,rhs=1 0.010 ± 0.000 0.130 ± 0.002 0.007 ± 0.000
small grad_sum_solve_jvp f64 4 2x2,rhs=1 0.009 ± 0.000 0.129 ± 0.001 0.005 ± 0.000
small grad_sum_solve_jvp f64 4 32x32,rhs=1 0.014 ± 0.000 0.136 ± 0.001 0.007 ± 0.000
small grad_sum_solve_jvp f64 4 4x4,rhs=1 0.009 ± 0.000 0.128 ± 0.001 0.005 ± 0.000
small grad_sum_solve_jvp f64 4 8x8,rhs=1 0.009 ± 0.000 0.130 ± 0.001 0.006 ± 0.000
small grad_sum_solve_vjp f64 4 16x16,rhs=1 0.010 ± 0.000 0.057 ± 0.000 0.008 ± 0.000
small grad_sum_solve_vjp f64 4 2x2,rhs=1 0.009 ± 0.000 0.056 ± 0.001 0.006 ± 0.000
small grad_sum_solve_vjp f64 4 32x32,rhs=1 0.014 ± 0.000 0.064 ± 0.000 0.008 ± 0.000
small grad_sum_solve_vjp f64 4 4x4,rhs=1 0.009 ± 0.000 0.055 ± 0.000 0.006 ± 0.000
small grad_sum_solve_vjp f64 4 8x8,rhs=1 0.009 ± 0.000 0.057 ± 0.001 0.006 ± 0.000
small grad_sum_svd_s_jvp f64 4 16x16 0.029 ± 0.000 0.101 ± 0.001 0.026 ± 0.000
small grad_sum_svd_s_jvp f64 4 2x2 0.008 ± 0.000 0.075 ± 0.001 0.005 ± 0.000
small grad_sum_svd_s_jvp f64 4 32x32 0.085 ± 0.000 0.172 ± 0.002 0.077 ± 0.000
small grad_sum_svd_s_jvp f64 4 4x4 0.010 ± 0.000 0.074 ± 0.001 0.007 ± 0.000
small grad_sum_svd_s_jvp f64 4 8x8 0.015 ± 0.000 0.079 ± 0.009 0.009 ± 0.001
small grad_sum_svd_s_vjp f64 4 16x16 0.028 ± 0.000 0.070 ± 0.001 0.026 ± 0.000
small grad_sum_svd_s_vjp f64 4 2x2 0.008 ± 0.000 0.046 ± 0.000 0.005 ± 0.000
small grad_sum_svd_s_vjp f64 4 32x32 0.084 ± 0.000 0.133 ± 0.001 0.077 ± 0.000
small grad_sum_svd_s_vjp f64 4 4x4 0.009 ± 0.000 0.047 ± 0.000 0.007 ± 0.000
small grad_sum_svd_s_vjp f64 4 8x8 0.014 ± 0.000 0.054 ± 0.001 0.009 ± 0.001

Loss Definitions

Threads: 8

Source report: data/results/zen5-cpu/cpu/einsum/20261028_001612/linalg_jvp_vjp_report.md.

Latest run: ./scripts/run_all.sh 8.

Derived from the CPU ops CSV under data/results/zen5-cpu/cpu/einsum/20261028_001612.

CPU Information

Thread Environment

Tenferro CPU BLAS Backend

Python Backend Providers

Linalg JVP/VJP Benchmark Items

Median ± IQR (ms). Missing backends are shown as -.

tenferro-rs JVP/VJP use trace-mode AdContext; PyTorch uses torch.func.jvp / vjp; JAX uses jax.jvp / jax.vjp.

suite benchmark dtype threads shape tenferro-rs trace mode (ms) PyTorch Python (ms) JAX Python (XLA CPU) (ms)
large grad_sum_eigh_jvp f64 8 1024x1024 145.846 ± 71.297 88.704 ± 0.388 131.017 ± 14.524
large grad_sum_eigh_jvp f64 8 256x256 23.445 ± 0.233 2.969 ± 0.032 7.389 ± 0.450
large grad_sum_eigh_jvp f64 8 512x512 39.714 ± 16.619 13.546 ± 0.278 33.056 ± 3.104
large grad_sum_eigh_vjp f64 8 1024x1024 70.888 ± 62.232 61.875 ± 0.340 127.451 ± 7.475
large grad_sum_eigh_vjp f64 8 256x256 23.683 ± 0.036 2.624 ± 0.024 7.439 ± 0.551
large grad_sum_eigh_vjp f64 8 512x512 56.452 ± 0.163 10.593 ± 0.061 30.960 ± 2.552
large grad_sum_lu_jvp f64 8 1024x1024 72.732 ± 7.440 105.859 ± 1.208 78.793 ± 23.053
large grad_sum_lu_jvp f64 8 256x256 3.673 ± 0.256 2.608 ± 0.035 3.972 ± 0.802
large grad_sum_lu_jvp f64 8 512x512 13.972 ± 0.074 17.580 ± 0.324 20.051 ± 7.398
large grad_sum_lu_vjp f64 8 1024x1024 80.207 ± 2.773 52.381 ± 0.437 87.642 ± 10.241
large grad_sum_lu_vjp f64 8 256x256 5.358 ± 0.448 1.352 ± 0.030 3.727 ± 0.760
large grad_sum_lu_vjp f64 8 512x512 13.830 ± 0.152 8.620 ± 0.095 16.255 ± 4.643
large grad_sum_qr_jvp f64 8 1024x1024 72.724 ± 0.951 75.625 ± 0.350 130.987 ± 18.173
large grad_sum_qr_jvp f64 8 256x256 11.764 ± 0.257 2.129 ± 0.033 6.683 ± 1.141
large grad_sum_qr_jvp f64 8 512x512 26.142 ± 0.685 11.916 ± 0.041 27.349 ± 5.019
large grad_sum_qr_vjp f64 8 1024x1024 162.127 ± 60.281 72.048 ± 0.613 126.977 ± 16.489
large grad_sum_qr_vjp f64 8 256x256 12.632 ± 0.378 2.294 ± 0.018 6.924 ± 1.097
large grad_sum_qr_vjp f64 8 512x512 21.594 ± 0.283 13.993 ± 0.229 28.212 ± 4.203
large grad_sum_solve_jvp f64 8 1024x1024,rhs=1 32.936 ± 33.342 6.222 ± 0.079 9.895 ± 0.620
large grad_sum_solve_jvp f64 8 256x256,rhs=1 1.771 ± 0.004 0.921 ± 1.365 0.348 ± 0.003
large grad_sum_solve_jvp f64 8 512x512,rhs=1 2.128 ± 0.027 1.411 ± 0.056 2.285 ± 0.871
large grad_sum_solve_vjp f64 8 1024x1024,rhs=1 15.299 ± 26.607 10.180 ± 0.209 8.984 ± 0.301
large grad_sum_solve_vjp f64 8 256x256,rhs=1 1.767 ± 0.004 0.553 ± 0.024 0.354 ± 0.011
large grad_sum_solve_vjp f64 8 512x512,rhs=1 2.643 ± 0.009 1.984 ± 0.012 2.241 ± 0.063
large grad_sum_svd_s_jvp f64 8 1024x1024 153.806 ± 1.073 212.593 ± 3.732 286.415 ± 13.652
large grad_sum_svd_s_jvp f64 8 256x256 14.975 ± 0.191 9.340 ± 0.056 12.494 ± 0.835
large grad_sum_svd_s_jvp f64 8 512x512 61.152 ± 20.178 42.266 ± 0.200 64.028 ± 7.731
large grad_sum_svd_s_vjp f64 8 1024x1024 154.665 ± 1.333 176.369 ± 4.091 293.920 ± 13.207
large grad_sum_svd_s_vjp f64 8 256x256 15.362 ± 0.549 8.582 ± 0.029 11.971 ± 0.956
large grad_sum_svd_s_vjp f64 8 512x512 61.142 ± 0.590 40.990 ± 1.113 67.046 ± 3.091
small grad_sum_eigh_jvp f64 8 16x16 0.034 ± 0.000 0.095 ± 0.001 0.026 ± 0.000
small grad_sum_eigh_jvp f64 8 2x2 0.018 ± 0.000 0.075 ± 0.001 0.007 ± 0.000
small grad_sum_eigh_jvp f64 8 32x32 0.085 ± 0.000 0.155 ± 0.003 0.084 ± 0.007
small grad_sum_eigh_jvp f64 8 4x4 0.020 ± 0.000 0.076 ± 0.001 0.009 ± 0.000
small grad_sum_eigh_jvp f64 8 8x8 0.023 ± 0.000 0.080 ± 0.002 0.010 ± 0.000
small grad_sum_eigh_vjp f64 8 16x16 0.034 ± 0.000 0.081 ± 0.001 0.026 ± 0.000
small grad_sum_eigh_vjp f64 8 2x2 0.018 ± 0.000 0.063 ± 0.001 0.008 ± 0.000
small grad_sum_eigh_vjp f64 8 32x32 0.085 ± 0.000 0.135 ± 0.002 0.080 ± 0.000
small grad_sum_eigh_vjp f64 8 4x4 0.019 ± 0.000 0.064 ± 0.000 0.009 ± 0.000
small grad_sum_eigh_vjp f64 8 8x8 0.022 ± 0.000 0.067 ± 0.001 0.010 ± 0.000
small grad_sum_lu_jvp f64 8 16x16 0.027 ± 0.000 0.138 ± 0.002 0.013 ± 0.000
small grad_sum_lu_jvp f64 8 2x2 0.022 ± 0.000 0.127 ± 0.002 0.009 ± 0.000
small grad_sum_lu_jvp f64 8 32x32 0.051 ± 0.000 0.209 ± 0.003 0.061 ± 0.000
small grad_sum_lu_jvp f64 8 4x4 0.023 ± 0.000 0.125 ± 0.002 0.009 ± 0.000
small grad_sum_lu_jvp f64 8 8x8 0.023 ± 0.000 0.127 ± 0.001 0.014 ± 0.000
small grad_sum_lu_vjp f64 8 16x16 0.026 ± 0.000 0.108 ± 0.001 0.012 ± 0.000
small grad_sum_lu_vjp f64 8 2x2 0.021 ± 0.000 0.099 ± 0.001 0.008 ± 0.000
small grad_sum_lu_vjp f64 8 32x32 0.061 ± 0.000 0.135 ± 0.002 0.034 ± 0.126
small grad_sum_lu_vjp f64 8 4x4 0.021 ± 0.000 0.099 ± 0.001 0.009 ± 0.000
small grad_sum_lu_vjp f64 8 8x8 0.022 ± 0.000 0.101 ± 0.001 0.013 ± 0.000
small grad_sum_qr_jvp f64 8 16x16 0.038 ± 0.000 0.099 ± 0.002 0.012 ± 0.000
small grad_sum_qr_jvp f64 8 2x2 0.032 ± 0.000 0.088 ± 0.001 0.008 ± 0.000
small grad_sum_qr_jvp f64 8 32x32 0.062 ± 0.000 0.130 ± 0.001 0.249 ± 0.000
small grad_sum_qr_jvp f64 8 4x4 0.032 ± 0.000 0.087 ± 0.001 0.009 ± 0.000
small grad_sum_qr_jvp f64 8 8x8 0.034 ± 0.000 0.090 ± 0.001 0.013 ± 0.000
small grad_sum_qr_vjp f64 8 16x16 0.038 ± 0.000 0.102 ± 0.001 0.011 ± 0.000
small grad_sum_qr_vjp f64 8 2x2 0.031 ± 0.000 0.090 ± 0.001 0.008 ± 0.000
small grad_sum_qr_vjp f64 8 32x32 0.061 ± 0.000 0.142 ± 0.001 0.046 ± 0.066
small grad_sum_qr_vjp f64 8 4x4 0.032 ± 0.000 0.090 ± 0.000 0.009 ± 0.000
small grad_sum_qr_vjp f64 8 8x8 0.033 ± 0.000 0.093 ± 0.001 0.011 ± 0.000
small grad_sum_solve_jvp f64 8 16x16,rhs=1 0.016 ± 0.000 0.206 ± 0.002 0.011 ± 0.000
small grad_sum_solve_jvp f64 8 2x2,rhs=1 0.014 ± 0.000 0.200 ± 0.002 0.008 ± 0.000
small grad_sum_solve_jvp f64 8 32x32,rhs=1 0.022 ± 0.000 0.215 ± 0.002 0.011 ± 0.000
small grad_sum_solve_jvp f64 8 4x4,rhs=1 0.015 ± 0.000 0.200 ± 0.001 0.008 ± 0.000
small grad_sum_solve_jvp f64 8 8x8,rhs=1 0.015 ± 0.000 0.202 ± 0.001 0.009 ± 0.000
small grad_sum_solve_vjp f64 8 16x16,rhs=1 0.016 ± 0.000 0.089 ± 0.001 0.012 ± 0.000
small grad_sum_solve_vjp f64 8 2x2,rhs=1 0.014 ± 0.000 0.084 ± 0.001 0.009 ± 0.000
small grad_sum_solve_vjp f64 8 32x32,rhs=1 0.022 ± 0.000 0.102 ± 0.001 0.013 ± 0.001
small grad_sum_solve_vjp f64 8 4x4,rhs=1 0.014 ± 0.000 0.084 ± 0.001 0.009 ± 0.000
small grad_sum_solve_vjp f64 8 8x8,rhs=1 0.015 ± 0.000 0.086 ± 0.000 0.010 ± 0.000
small grad_sum_svd_s_jvp f64 8 16x16 0.045 ± 0.000 0.159 ± 0.005 0.041 ± 0.000
small grad_sum_svd_s_jvp f64 8 2x2 0.013 ± 0.000 0.113 ± 0.001 0.008 ± 0.000
small grad_sum_svd_s_jvp f64 8 32x32 0.134 ± 0.000 0.271 ± 0.004 0.123 ± 0.001
small grad_sum_svd_s_jvp f64 8 4x4 0.015 ± 0.000 0.115 ± 0.003 0.011 ± 0.000
small grad_sum_svd_s_jvp f64 8 8x8 0.024 ± 0.000 0.127 ± 0.001 0.014 ± 0.001
small grad_sum_svd_s_vjp f64 8 16x16 0.045 ± 0.000 0.108 ± 0.001 0.042 ± 0.000
small grad_sum_svd_s_vjp f64 8 2x2 0.012 ± 0.000 0.069 ± 0.001 0.009 ± 0.000
small grad_sum_svd_s_vjp f64 8 32x32 0.133 ± 0.000 0.208 ± 0.003 0.122 ± 0.000
small grad_sum_svd_s_vjp f64 8 4x4 0.014 ± 0.000 0.071 ± 0.001 0.011 ± 0.000
small grad_sum_svd_s_vjp f64 8 8x8 0.023 ± 0.000 0.081 ± 0.001 0.014 ± 0.000

Loss Definitions