Repository navigation
Commit a67828e
perf: apply the interferometer sparse operator with rfft2/irfft2 (#538)
`InterferometerSparseOperator` zero-padded a real batch to (2y, 2x) and applied the
operator with the complex `fft2`/`ifft2` pair, taking `Re(...)` of an already-real
result; `Khat` was likewise the complex transform of a real preload. Because the
preload and the batch are both real, the real-transform pair is exact here, not an
approximation: the discarded half of the spectrum is the conjugate mirror of the half
that is kept, and `irfft2` reconstructs it.
- `from_nufft_precision_operator` now caches `Khat = rfft2(preload)`, shape (2y, x + 1)
rather than (2y, 2x) complex.
- `apply_operator` does `rfft2` -> multiply -> `irfft2(s=(2y, 2x))` -> crop, dropping
the `jnp.real` call.
- Pinned against the complex `fft2`/`ifft2` algorithm at `rtol=1e-10`,
`atol=1e-10 * max|G|` on the 7x7 / K=5 fixture and a seeded 12x12 / K=64 case
(max abs error 2.8e-14). A loosened tolerance would hide a bug, so the pin stays at
round-off.
- Measured 1.27-1.61x faster on every geometry and mesh (autolens_profiling#226,
`results/notes/numba_interferometer_verdict.md`).
No API change: the four consumers only call `apply_operator`, `Khat` is not serialised
and the workspace `.npy` caches store the raw preload.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018hLF3ZAcz5MmaSJBEcLkvF1 parent 47a00e8 commit a67828e
2 files changed
Lines changed: 116 additions & 29 deletions
File tree
- autoarray/inversion/inversion/interferometer
- test_autoarray/inversion/inversion/interferometer
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
563 | 563 | | |
564 | 564 | | |
565 | 565 | | |
566 | | - | |
| 566 | + | |
567 | 567 | | |
568 | 568 | | |
569 | 569 | | |
| |||
578 | 578 | | |
579 | 579 | | |
580 | 580 | | |
581 | | - | |
| 581 | + | |
582 | 582 | | |
583 | | - | |
| 583 | + | |
| 584 | + | |
584 | 585 | | |
585 | 586 | | |
586 | 587 | | |
| |||
614 | 615 | | |
615 | 616 | | |
616 | 617 | | |
617 | | - | |
| 618 | + | |
618 | 619 | | |
619 | 620 | | |
620 | 621 | | |
| |||
633 | 634 | | |
634 | 635 | | |
635 | 636 | | |
636 | | - | |
637 | | - | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
638 | 640 | | |
639 | 641 | | |
640 | 642 | | |
| |||
654 | 656 | | |
655 | 657 | | |
656 | 658 | | |
657 | | - | |
| 659 | + | |
| 660 | + | |
658 | 661 | | |
659 | 662 | | |
660 | 663 | | |
| |||
673 | 676 | | |
674 | 677 | | |
675 | 678 | | |
676 | | - | |
| 679 | + | |
677 | 680 | | |
678 | 681 | | |
679 | 682 | | |
| |||
697 | 700 | | |
698 | 701 | | |
699 | 702 | | |
700 | | - | |
| 703 | + | |
701 | 704 | | |
702 | 705 | | |
703 | 706 | | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
704 | 716 | | |
705 | 717 | | |
706 | 718 | | |
| |||
720 | 732 | | |
721 | 733 | | |
722 | 734 | | |
723 | | - | |
| 735 | + | |
724 | 736 | | |
725 | | - | |
726 | | - | |
| 737 | + | |
| 738 | + | |
727 | 739 | | |
728 | 740 | | |
729 | 741 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | | - | |
| 71 | + | |
72 | 72 | | |
73 | | - | |
74 | | - | |
| 73 | + | |
| 74 | + | |
75 | 75 | | |
76 | | - | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
77 | 95 | | |
78 | 96 | | |
79 | 97 | | |
| |||
86 | 104 | | |
87 | 105 | | |
88 | 106 | | |
89 | | - | |
90 | | - | |
91 | 107 | | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
103 | 116 | | |
104 | 117 | | |
105 | 118 | | |
| |||
253 | 266 | | |
254 | 267 | | |
255 | 268 | | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
0 commit comments