FFTW / fftw3

DO NOT CHECK OUT THESE FILES FROM GITHUB UNLESS YOU KNOW WHAT YOU ARE DOING. (See below.)
GNU General Public License v2.0
2.75k stars 666 forks source link

SVE Imlementation #355

Open Juliya32 opened 6 months ago

Juliya32 commented 6 months ago

Hi 1)Is sve already implemented in fftw-3.3.10 i) If yes, is it implemented for all routines? ii) If not , How can one implement for the remaining routines ( Where to make the changes in the code and any other targeted file sve. I have checked this (https://github.com/rdolbeau/fftw3/tree/arm-sve) and found only one program that uses sve_width() (calculates width of sve vector) in simd-support/sve.h file. 2) If sve is not applied at all could you please guide me in applying sve to fftw library. I tried changing the given part of code under kernel/planner.c usning intrinsics on arm. for (i = 0; i < osiz; ++i) ntab[i] = otab[i]; After making the changing i tried rebuilding the library, but it throws error that arm_sve is not supported. (It cannot recognize any sve data types or routines like sv_bool, sv_float32, svld1 etc. )

I built the library using the following commands: 1)./configure --prefix=/home/../FFTW_SVE/fftw-3.3.10/build/ --enable-sve --enable-neon --enable-fma --enable-armv8-cntvct-e10 --enable-threads --enable-shared --enable-single CC=gcc CFLAGS="-O3 -gdwarf-4 -mtune=native -march=armv8.2-a+sve -msve-vector-bits=512" CXXFLAGS="-Ofast -march=armv8.2-a+sve -sve-vector-bits=512" FC=gfortran FFLAGS="-g -O3 -march=armv8.2-a+sve -msve-vector-bits=512" 2)make 3)make install gcc --version 12.2.0

rdolbeau commented 4 months ago

see #315, yes it can be exploited in all plans (but will only be used if useful vs. scalar and NEON if using >= measure)