While evaluating FFTW 3.3.11 on multiple Arm platforms, we identified a portability issue related to the SVE implementation.
When FFTW is built with the following options:
--enable-sve
-march=armv8.2-a+sve
the generated library executes SVE-specific instructions such as CNTB at runtime. As a result, applications terminate with a SIGILL (illegal instruction) exception when executed on Arm systems that do not support SVE.
We believe it would be preferable for FFTW to detect SVE support at runtime and avoid executing SVE-specific code paths on systems where SVE is unavailable.
This behavior also makes it difficult for Linux distributions such as RHEL and Rocky Linux to provide a single FFTW package that can be used across heterogeneous Arm systems. A package built with SVE support cannot currently run on systems that lack SVE, which reduces portability and complicates package maintenance.
Would it be possible to consider the following approaches?
- Detect SVE support at runtime before executing SVE-specific code.
- Fall back to a non-SVE implementation when SVE is not available.
These improvements would significantly enhance portability across Arm platforms and simplify packaging for Linux distributions.
We would appreciate the maintainers' thoughts on this issue and whether such an enhancement could be considered for a future FFTW release. Addressing this within FFTW itself would benefit the broader Arm ecosystem as well as Linux distribution maintainers.
If additional testing or validation on Arm platforms would be helpful, we would be happy to provide feedback.
While evaluating FFTW 3.3.11 on multiple Arm platforms, we identified a portability issue related to the SVE implementation.
When FFTW is built with the following options:
the generated library executes SVE-specific instructions such as CNTB at runtime. As a result, applications terminate with a SIGILL (illegal instruction) exception when executed on Arm systems that do not support SVE.
We believe it would be preferable for FFTW to detect SVE support at runtime and avoid executing SVE-specific code paths on systems where SVE is unavailable.
This behavior also makes it difficult for Linux distributions such as RHEL and Rocky Linux to provide a single FFTW package that can be used across heterogeneous Arm systems. A package built with SVE support cannot currently run on systems that lack SVE, which reduces portability and complicates package maintenance.
Would it be possible to consider the following approaches?
These improvements would significantly enhance portability across Arm platforms and simplify packaging for Linux distributions.
We would appreciate the maintainers' thoughts on this issue and whether such an enhancement could be considered for a future FFTW release. Addressing this within FFTW itself would benefit the broader Arm ecosystem as well as Linux distribution maintainers.
If additional testing or validation on Arm platforms would be helpful, we would be happy to provide feedback.