Skip to content

Update to GPUEnv 0.3 - #47

Merged
hakkelt merged 6 commits into
masterfrom
gpuenv-0.3
Nov 2, 2026
Merged

hakkelt merged 6 commits into
masterfrom
gpuenv-0.3

Conversation

@hakkelt

@hakkelt hakkelt commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

GPUEnv 0.3 renamed include_jlarrays to include_cpu_backends; the test project had no GPUEnv compat bound, so it already resolves 0.3 and the DSP/FFTW GPU tests fail with an unsupported keyword. The DSP and DFT GPU tests drop the keyword (supports_fftw = true is enough, and JLArray passes them on Julia 1.11+); the DCT test and the benchmark use the new name, since AcceleratedDCTs does not support JLArrays. The test project gets GPUEnv = "0.3".

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Benchmark Results (Julia v1.13.1)

🐢 2 time regressions detected

Time benchmarks
Benchmark base head Ratio (base/head)
batching/SimpleBatchOp/adjoint-single 38.6 ± 2.1 μs 35.3 ± 2.8 μs 1.09 ± 0.21
batching/SimpleBatchOp/forward-single 33.8 ± 2.1 μs 31 ± 2.8 μs 1.09 ± 0.24
batching/SpreadingBatchOp/adjoint-single 20.4 ± 1.5 μs 19.1 ± 1.9 μs 1.07 ± 0.27
batching/SpreadingBatchOp/forward-single 18 ± 1.7 μs 16.4 ± 1.7 μs 1.1 ± 0.31
calculus/AffineAdd/adjoint 4.65 ± 0.055 μs 4.69 ± 0.085 μs 0.991 ± 0.043
calculus/AffineAdd/forward 10.3 ± 0.28 μs 10.4 ± 0.81 μs 0.985 ± 0.16
calculus/Ax_mul_Bx/forward 28 ± 0.49 μs 27.7 ± 0.45 μs 1.01 ± 0.048
calculus/Ax_mul_Bx/jacobian-adjoint 51.2 ± 1.3 μs 50.7 ± 3.1 μs 1.01 ± 0.13
calculus/Ax_mul_Bxt/forward 27.9 ± 0.44 μs 27.7 ± 0.28 μs 1.01 ± 0.037
calculus/Ax_mul_Bxt/jacobian-adjoint 50.5 ± 2.6 μs 49.8 ± 2.2 μs 1.02 ± 0.14
calculus/Axt_mul_Bx/forward 31.6 ± 0.42 μs 31.5 ± 0.31 μs 1.01 ± 0.033
calculus/Axt_mul_Bx/jacobian-adjoint 46.3 ± 1.2 μs 46.1 ± 1.6 μs 1 ± 0.086
calculus/BroadCast/identity-single 50.6 ± 2.7 μs 50.8 ± 2.9 μs 0.997 ± 0.16
calculus/BroadCast/operator-single-adjoint 12.7 ± 0.38 μs 12.4 ± 0.38 μs 1.02 ± 0.088
calculus/BroadCast/operator-single-forward 240 ± 20 ns 240 ± 10 ns 1 ± 0.18
calculus/Compose/adjoint 8.14 ± 1.3 μs 7.87 ± 0.57 μs 1.03 ± 0.35
calculus/Compose/forward 8.4 ± 1.3 μs 8.25 ± 0.57 μs 1.02 ± 0.35
calculus/DCAT/adjoint 16.8 ± 1.6 μs 16.3 ± 2.4 μs 1.03 ± 0.36
calculus/DCAT/forward 18.3 ± 2.2 μs 16.4 ± 2 μs 1.11 ± 0.38
calculus/HCAT/adjoint 15.9 ± 1.6 μs 17.9 ± 2.6 μs 0.889 ± 0.32
calculus/HCAT/forward 27.4 ± 2.8 μs 26.8 ± 3.2 μs 1.02 ± 0.32
calculus/HadamardProd/forward 709 ± 9 μs 714 ± 9.2 μs 0.993 ± 0.036
calculus/HadamardProd/jacobian-adjoint 783 ± 7.3 μs 785 ± 8.1 μs 0.998 ± 0.028
calculus/Jacobian/sigmoid-adjoint 124 ± 2.7 μs 122 ± 1.4 μs 1.01 ± 0.05
calculus/Reshape/adjoint 4.65 ± 0.065 μs 4.66 ± 0.08 μs 0.998 ± 0.044
calculus/Reshape/forward 4.86 ± 0.18 μs 4.88 ± 0.21 μs 0.996 ± 0.11
calculus/Scale/adjoint 6.93 ± 0.06 μs 6.94 ± 0.08 μs 0.999 ± 0.029
calculus/Scale/forward 7.05 ± 0.23 μs 7.26 ± 0.47 μs 0.971 ± 0.14
calculus/Sum/adjoint 26 ± 2.7 μs 25.7 ± 2.7 μs 1.01 ± 0.3
calculus/Sum/forward 25.9 ± 2.7 μs 26.2 ± 2.5 μs 0.992 ± 0.28
calculus/VCAT/adjoint 26.7 ± 1.9 μs 26.4 ± 2 μs 1.01 ± 0.21
calculus/VCAT/forward 15.4 ± 0.69 μs 15.5 ± 0.59 μs 0.998 ± 0.12
dspoperators/Filt/adjoint 457 ± 10 μs 462 ± 9.1 μs 0.99 ± 0.059
dspoperators/Filt/forward 466 ± 14 μs 471 ± 14 μs 0.988 ± 0.083
dspoperators/MIMOFilt/adjoint 158 ± 1.2 μs 161 ± 1.3 μs 0.984 ± 0.022
dspoperators/MIMOFilt/forward 165 ± 1.9 μs 165 ± 1 μs 1 ± 0.026
dspoperators/Xcorr/adjoint 51.2 ± 3.7 μs 55.4 ± 39 μs 0.923 ± 1.3
dspoperators/Xcorr/forward 321 ± 11 μs 326 ± 14 μs 0.985 ± 0.11
fftwoperators/DFT/adjoint 128 ± 5.5 μs 127 ± 5.3 μs 1 ± 0.12
fftwoperators/DFT/forward 105 ± 5.8 μs 106 ± 6.6 μs 0.991 ± 0.17
linearoperators/DiagOp/adjoint-single 213 ± 8.6 μs 220 ± 15 μs 0.968 ± 0.15
linearoperators/DiagOp/adjoint-threaded 149 ± 16 μs 169 ± 13 μs 0.882 ± 0.23
linearoperators/DiagOp/forward-single 204 ± 6.5 μs 206 ± 6.5 μs 0.993 ± 0.089
linearoperators/DiagOp/forward-threaded 157 ± 19 μs 184 ± 11 μs 0.854 ± 0.23
linearoperators/Eye/forward 303 ± 15 μs 304 ± 15 μs 0.997 ± 0.14
linearoperators/FiniteDiff/adjoint 269 ± 11 μs 266 ± 7.3 μs 1.01 ± 0.1
linearoperators/FiniteDiff/forward 270 ± 12 μs 275 ± 8 μs 0.983 ± 0.1
linearoperators/GetIndex/adjoint 567 ± 22 μs 578 ± 16 μs 0.98 ± 0.093
linearoperators/GetIndex/forward 410 ± 20 μs 406 ± 21 μs 1.01 ± 0.14
linearoperators/LBFGS/mul 41.8 ± 0.47 μs 41.6 ± 0.97 μs 1.01 ± 0.052
linearoperators/LBFGS/update 9.06 ± 0.47 μs 8.56 ± 0.38 μs 1.06 ± 0.14
linearoperators/LMatrixOp/adjoint 218 ± 12 μs 180 ± 30 μs 1.21 ± 0.43
linearoperators/LMatrixOp/forward 117 ± 15 μs 136 ± 20 μs 0.861 ± 0.34
linearoperators/MatrixOp/adjoint 153 ± 1.9 μs 153 ± 2.3 μs 0.996 ± 0.038
linearoperators/MatrixOp/forward 151 ± 1.6 μs 152 ± 1.8 μs 0.996 ± 0.032
linearoperators/MyLinOp/adjoint 214 ± 9.6 μs 213 ± 13 μs 1 ± 0.15
linearoperators/MyLinOp/forward 207 ± 8 μs 207 ± 5.9 μs 0.999 ± 0.096
linearoperators/Variation/adjoint-single 430 ± 4.7 μs 433 ± 5.2 μs 0.992 ± 0.032
linearoperators/Variation/forward-single 77.9 ± 14 μs 90.2 ± 9 μs 0.864 ± 0.35
linearoperators/ZeroPad/adjoint 108 ± 0.87 μs 109 ± 0.54 μs 0.995 ± 0.019
linearoperators/ZeroPad/forward 46 ± 5.5 μs 49.2 ± 3.2 μs 0.935 ± 0.25
linearoperators/Zeros/forward 468 ± 35 μs 471 ± 24 μs 0.992 ± 0.18
nfftoperators/NFFTOp/adjoint 190 ± 4.5 μs 190 ± 4.7 μs 1 ± 0.068
nfftoperators/NFFTOp/forward 156 ± 3 μs 155 ± 3.2 μs 1 ± 0.057
nonlinearoperators/Atan/forward 188 ± 5.6 μs 308 ± 30 μs 0.612 ± 0.13 🐢
nonlinearoperators/Atan/jacobian-adjoint 15.5 ± 6.1 μs 34.8 ± 11 μs 0.446 ± 0.44
nonlinearoperators/Cos/forward 234 ± 13 μs 238 ± 12 μs 0.982 ± 0.15
nonlinearoperators/Cos/jacobian-adjoint 284 ± 12 μs 303 ± 17 μs 0.937 ± 0.13
nonlinearoperators/Exp/forward 408 ± 5.3 μs 410 ± 5.2 μs 0.996 ± 0.036
nonlinearoperators/Exp/jacobian-adjoint 461 ± 5.3 μs 461 ± 5.7 μs 0.998 ± 0.034
nonlinearoperators/Pow/forward 393 ± 4.5 μs 393 ± 4.4 μs 1 ± 0.032
nonlinearoperators/Pow/jacobian-adjoint 325 ± 4.5 μs 325 ± 4.9 μs 0.999 ± 0.041
nonlinearoperators/Sech/forward 128 ± 3 μs 125 ± 0.69 μs 1.02 ± 0.049
nonlinearoperators/Sech/jacobian-adjoint 486 ± 13 μs 474 ± 8.1 μs 1.03 ± 0.065
nonlinearoperators/Sigmoid/forward 262 ± 4 μs 262 ± 4.1 μs 1 ± 0.044
nonlinearoperators/Sigmoid/jacobian-adjoint 250 ± 4.7 μs 255 ± 3.1 μs 0.979 ± 0.044
nonlinearoperators/Sin/forward 126 ± 15 μs 255 ± 22 μs 0.495 ± 0.15 🐢
nonlinearoperators/Sin/jacobian-adjoint 294 ± 14 μs 294 ± 16 μs 1 ± 0.14
nonlinearoperators/SoftMax/forward 256 ± 4.1 μs 255 ± 4.1 μs 1 ± 0.045
nonlinearoperators/SoftMax/jacobian-adjoint 276 ± 6.9 μs 290 ± 11 μs 0.952 ± 0.086
nonlinearoperators/SoftPlus/forward 685 ± 4.6 μs 685 ± 4.4 μs 1 ± 0.019
nonlinearoperators/SoftPlus/jacobian-adjoint 299 ± 7.7 μs 301 ± 7.2 μs 0.995 ± 0.07
nonlinearoperators/Tanh/forward 158 ± 21 μs 157 ± 0.68 μs 1.01 ± 0.27
nonlinearoperators/Tanh/jacobian-adjoint 140 ± 1.7 μs 140 ± 0.79 μs 1 ± 0.026
normaloperators/DFT/mul 3.68 ± 0.045 μs 3.63 ± 0.08 μs 1.01 ± 0.051
normaloperators/DiagOp/mul 213 ± 7.4 μs 217 ± 10 μs 0.981 ± 0.12
normaloperators/NFFTOp/mul 123 ± 2.1 μs 119 ± 2.4 μs 1.03 ± 0.054
waveletoperators/WaveletOp/adjoint 2.86 ± 0.017 ms 2.84 ± 0.011 ms 1.01 ± 0.014
waveletoperators/WaveletOp/forward 1.04 ± 0.0038 ms 1.06 ± 0.025 ms 0.981 ± 0.046
Memory benchmarks
Benchmark base head Ratio (base/head)
batching/SimpleBatchOp/adjoint-single 704 allocs (275.00 KiB) 704 allocs (275.00 KiB) 1
batching/SimpleBatchOp/forward-single 384 allocs (265.00 KiB) 384 allocs (265.00 KiB) 1
batching/SpreadingBatchOp/adjoint-single 386 allocs (139.09 KiB) 386 allocs (139.09 KiB) 1
batching/SpreadingBatchOp/forward-single 224 allocs (134.00 KiB) 224 allocs (134.00 KiB) 1
calculus/AffineAdd/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/AffineAdd/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Ax_mul_Bx/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Ax_mul_Bx/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Ax_mul_Bxt/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Ax_mul_Bxt/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Axt_mul_Bx/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Axt_mul_Bx/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/BroadCast/identity-single 1 allocs (48 bytes) 1 allocs (48 bytes) 1
calculus/BroadCast/operator-single-adjoint 119 allocs (4.48 KiB) 119 allocs (4.48 KiB) 1
calculus/BroadCast/operator-single-forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Compose/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Compose/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/DCAT/adjoint 1 allocs (32 bytes) 1 allocs (32 bytes) 1
calculus/DCAT/forward 1 allocs (32 bytes) 1 allocs (32 bytes) 1
calculus/HCAT/adjoint 131 allocs (4.70 KiB) 131 allocs (4.70 KiB) 1
calculus/HCAT/forward 70 allocs (2.52 KiB) 70 allocs (2.52 KiB) 1
calculus/HadamardProd/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/HadamardProd/jacobian-adjoint 6 allocs (512.14 KiB) 6 allocs (512.14 KiB) 1
calculus/Jacobian/sigmoid-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Reshape/adjoint 1 allocs (32 bytes) 1 allocs (32 bytes) 1
calculus/Reshape/forward 1 allocs (32 bytes) 1 allocs (32 bytes) 1
calculus/Scale/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Scale/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Sum/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/Sum/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
calculus/VCAT/adjoint 130 allocs (4.67 KiB) 130 allocs (4.67 KiB) 1
calculus/VCAT/forward 71 allocs (2.55 KiB) 71 allocs (2.55 KiB) 1
dspoperators/Filt/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
dspoperators/Filt/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
dspoperators/MIMOFilt/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
dspoperators/MIMOFilt/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
dspoperators/Xcorr/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
dspoperators/Xcorr/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
fftwoperators/DFT/adjoint 45 allocs (258.34 KiB) 45 allocs (258.34 KiB) 1
fftwoperators/DFT/forward 45 allocs (258.34 KiB) 45 allocs (258.34 KiB) 1
linearoperators/DiagOp/adjoint-single 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/DiagOp/adjoint-threaded 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/DiagOp/forward-single 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/DiagOp/forward-threaded 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/Eye/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/FiniteDiff/adjoint 11 allocs (4.00 MiB) 11 allocs (4.00 MiB) 1
linearoperators/FiniteDiff/forward 6 allocs (4.00 MiB) 6 allocs (4.00 MiB) 1
linearoperators/GetIndex/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/GetIndex/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/LBFGS/mul 65 allocs (1.33 KiB) 65 allocs (1.33 KiB) 1
linearoperators/LBFGS/update 3 allocs (48 bytes) 3 allocs (48 bytes) 1
linearoperators/LMatrixOp/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/LMatrixOp/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/MatrixOp/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/MatrixOp/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/MyLinOp/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/MyLinOp/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/Variation/adjoint-single 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/Variation/forward-single 512 allocs (16.00 KiB) 512 allocs (16.00 KiB) 1
linearoperators/ZeroPad/adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/ZeroPad/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
linearoperators/Zeros/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nfftoperators/NFFTOp/adjoint 152 allocs (5.28 KiB) 152 allocs (5.28 KiB) 1
nfftoperators/NFFTOp/forward 149 allocs (5.17 KiB) 149 allocs (5.17 KiB) 1
nonlinearoperators/Atan/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Atan/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Cos/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Cos/jacobian-adjoint 6 allocs (512.14 KiB) 6 allocs (512.14 KiB) 1
nonlinearoperators/Exp/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Exp/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Pow/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Pow/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Sech/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Sech/jacobian-adjoint 6 allocs (512.14 KiB) 6 allocs (512.14 KiB) 1
nonlinearoperators/Sigmoid/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Sigmoid/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Sin/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Sin/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/SoftMax/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/SoftMax/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/SoftPlus/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/SoftPlus/jacobian-adjoint 3 allocs (512.07 KiB) 3 allocs (512.07 KiB) 1
nonlinearoperators/Tanh/forward 0 allocs (0 bytes) 0 allocs (0 bytes) 1
nonlinearoperators/Tanh/jacobian-adjoint 0 allocs (0 bytes) 0 allocs (0 bytes) 1
normaloperators/DFT/mul 0 allocs (0 bytes) 0 allocs (0 bytes) 1
normaloperators/DiagOp/mul 0 allocs (0 bytes) 0 allocs (0 bytes) 1
normaloperators/NFFTOp/mul 7 allocs (208 bytes) 7 allocs (208 bytes) 1
waveletoperators/WaveletOp/adjoint 12 allocs (512.46 KiB) 12 allocs (512.46 KiB) 1
waveletoperators/WaveletOp/forward 12 allocs (512.46 KiB) 12 allocs (512.46 KiB) 1

Ratio interpretation: values > 1 mean the PR is faster; values < 1 mean slower.
🚀 significant speedup · 🐢 significant slowdown

hakkelt and others added 6 commits November 2, 2026 18:35
JET 0.12 is the release series for Julia 1.13. Capped at 0.11, the
test environment resolved JET 0.11.6 on Julia 1.13, which does not
constant-fold `Base.dotgetproperty`, the lowering of `op.buf .= x`:
it reported a runtime dispatch on every such field broadcast
(NfftNormalOp's mul!) and on Hankel's keyword constructor, where
native inference and JET 0.12.2 find none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI's Documenter build failed cross-reference resolution on
[estimate_opnorm](@ref) inside opnorm's docstring, even though both are
documented on the same docs page (docs/src/properties.md) -- passes locally
with the pinned Documenter 1.17.0 but not with whatever version CI resolves
fresh against docs/Project.toml's "1.8" compat bound. Same failure mode and
fix as 7df169f: replace the fragile @ref with a plain code span.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AcceleratedDCTs plans call synchronize on the array's KernelAbstractions
backend, which JLArrays does not implement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….11+

Without it, every backend was skipped and the test item passed with no
checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.13%. Comparing base (a9c6167) to head (907d673).
⚠️ Report is 6 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master      #47   +/-   ##
=======================================
  Coverage   90.13%   90.13%           
=======================================
  Files          51       51           
  Lines        3678     3678           
=======================================
  Hits         3315     3315           
  Misses        363      363           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@hakkelt
hakkelt merged commit 907d673 into master Nov 2, 2026
9 of 10 checks passed
@hakkelt
hakkelt deleted the gpuenv-0.3 branch November 3, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant