Commit 7dcfef7
committed
feat: lower the FFT op family in the native Expr compiler
Nx.fft / ifft (1-D, trailing axis) and the fft2 / ifft2 / rfft / irfft
blocks now lower under `compiler: Emily.Compiler, native: true` instead
of forcing a graceful fallback to the evaluator. The MLX ops and eager
NIFs already existed (Native.{fftn,ifftn,rfftn,irfftn} ->
mlx::core::fft::*); only the compiler path was missing.
- opcodes.hpp: add Fftn/Ifftn/Rfftn/Irfftn (88-91), bump kOpcodeCount to
92, dispatch each to the matching mx::fft::* with FFTNorm::Backward
(unnormalized), mirroring the eager fft.cpp entry points.
- ir.ex: add the opcodes; lower :fft/:ifft (lower_op) on the trailing
axis (mirroring Emily.Backend.{fft,ifft}/3, which ignore opts[:axis]);
lower the Nx.Block.{FFT2,IFFT2,RFFT,IRFFT} blocks (lower_block) with the
block's sizes/axes. Output coerced to out.type (complex64 for the
forward transforms, real for irfft) like the backend wrap.
- compiler_equivalence_test.exs: native-vs-evaluator bit-identical cases
for fft/ifft (+ explicit length, batched), fft2/ifft2, and rfft/irfft.
This was the op forcing a fallback in a Whisper speech_to_text serving
(the log-mel featurizer's STFT), so that path now compiles fully native.1 parent 26faf73 commit 7dcfef7
4 files changed
Lines changed: 125 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
61 | 70 | | |
62 | 71 | | |
63 | 72 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
168 | 168 | | |
169 | 169 | | |
170 | 170 | | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
171 | 178 | | |
172 | 179 | | |
173 | | - | |
| 180 | + | |
174 | 181 | | |
175 | 182 | | |
176 | 183 | | |
| |||
663 | 670 | | |
664 | 671 | | |
665 | 672 | | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
666 | 694 | | |
667 | 695 | | |
668 | 696 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
148 | | - | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
149 | 157 | | |
150 | 158 | | |
151 | 159 | | |
| |||
498 | 506 | | |
499 | 507 | | |
500 | 508 | | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
501 | 522 | | |
502 | 523 | | |
503 | 524 | | |
| |||
1012 | 1033 | | |
1013 | 1034 | | |
1014 | 1035 | | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
1015 | 1061 | | |
1016 | 1062 | | |
1017 | 1063 | | |
1018 | | - | |
| 1064 | + | |
1019 | 1065 | | |
1020 | 1066 | | |
1021 | 1067 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
476 | 476 | | |
477 | 477 | | |
478 | 478 | | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
479 | 518 | | |
480 | 519 | | |
481 | 520 | | |
| |||
0 commit comments