Search papers, labs, and topics across Lattice.
To address memory hierarchy and register pressure bottlenecks in frequency-domain processing, the authors implement BRiDCT, an open-source float32 2D DCT library optimized in C11 and ARM NEON. The work demonstrates that organizing SIMD lane execution, banded intermediate storage, and register blocking yields significantly higher throughput gains than minimizing theoretical arithmetic operation counts. Evaluated on an Apple M3 Max, the engine consistently outperforms Apple Accelerate (vDSP), FFTW, and OpenCV across array sizes from $8\times8$ to $1024\times1024$ while passing rigorous 1,260-check numerical verification tests.
Careful SIMD register blocking and memory layout beat algorithmic operation-count reductions, enabling a pure ARM NEON 2D DCT that decisively outperforms Apple's own Accelerate framework, FFTW, and OpenCV.
Repeated two-dimensional discrete cosine transforms (DCTs) require implementations that remain fast across several array sizes while preserving the mathematical transform. Fewer arithmetic operations do not guarantee a faster DCT: execution time also depends on how the computation uses the CPU's single-instruction, multiple-data (SIMD) units, registers and memory hierarchy. We implement established DCT algorithms in SIMD and compare execution strategies for forward, inverse, and normalized round-trip transforms on float32 arrays from $8\times8$ to $256\times256$. The resulting library, BRiDCT, combines the Shao--Johnson factorization with SIMD lane organization, banded intermediate storage, padding, and register blocking in C11/ARM NEON. On one Apple M3 Max, the final native library has lower execution times than the tested general-purpose routes---Apple's Accelerate framework (vDSP), FFTW and Ooura---across their available cases from $8\times8$ to $256\times256$. It also outperforms the tested libjxl and floating-point libjpeg-turbo routes. The compiled NumPy interface outperforms OpenCV in all 130 tested contracts per session, including squares up to $1024\times1024$ and two rectangles, with call and allocation costs included. Complementary comparisons evaluate SciPy, DUCC and cached/planned pyFFTW. The measured gains come from organizing SIMD execution and intermediate storage, rather than introducing a new arithmetic factorization. A reproducible 474-input verification corpus probes cancellation, neighboring floats, dynamic range, and extreme amplitudes: all 1 260 core checks of the final configuration pass, while boundary diagnostics reveal overflow and weak-component limitations. Larger native transforms show size-dependent limits. Code, versioned releases, dataset and recorded measurements: https://github.com/antmoev/bridct.