This is a fork of the FFTW3 for the Armv8-A 64-bit architecture (AArch64) with 512-bit Scalable Vector Extension (SVE) support.
See the FFTW home page for more information.
- Fujitsu Fortran Compiler and Fujitsu C/C++ Compiler
- GNU automake 1.16.1 or higher
- GNU Autoconf 2.69 or higher
- GNU libtool 2.4.6 or higher
- GNU Texinfo 6.7 or higher
- Clone this repository.
$ git clone https://github.com/fujitsu/fftw3.git
- Run autoreconf.
$ cd fftw3
$ touch ChangeLog
$ autoreconf --verbose --install --symlink --force
- To create a library for fortran, specify
--enable-linkfortran
at configure, if the compiler option -Nclang is specified in the environment variable for compile command or in the compilation profile file.
- Native compilation using Fujitsu compiler (AArch64 target).
$ ./configure \
CC="fcc" \
F77="frt" \
CFLAGS='-Nclang -Ofast -ffj-no-fast-matmul' \
FFLAGS='-Kfast' \
--enable-sve \
--enable-armv8-cntvct-el0 \
--enable-float \
--enable-fma \
--enable-fortran \
--enable-openmp \
--enable-shared \
--prefix="$INSTALL_PATH" \
--libdir="$INSTALL_PATH/lib64" \
ac_cv_prog_f77_v='-###' \
OPENMP_CFLAGS='-Kopenmp'
$ make -j30
- Cross compilation using Fujitsu compiler (AArch64 target).
$ ./configure \
CC="fccpx" \
F77="frtpx" \
CFLAGS='-Nclang -Ofast -ffj-no-fast-matmul' \
FFLAGS='-Kfast' \
--host=aarch64-unknown-linux-gnu \
--build=x86_64-cross-linux-gnu \
--enable-sve \
--enable-armv8-cntvct-el0 \
--enable-float \
--enable-fma \
--enable-fortran \
--enable-openmp \
--enable-shared \
--prefix="$INSTALL_PATH" \
--libdir="$INSTALL_PATH/lib64" \
ac_cv_prog_f77_v='-###' \
OPENMP_CFLAGS='-Kopenmp'
$ make -j30
- Native compilation using Fujitsu compiler (AArch64 target).
$ ./configure \
CC="fcc" \
F77="frt" \
CFLAGS='-Nclang -Ofast -ffj-no-fast-matmul' \
FFLAGS='-Kfast' \
--enable-sve \
--enable-armv8-cntvct-el0 \
--enable-fma \
--enable-fortran \
--enable-openmp \
--enable-shared \
--prefix="$INSTALL_PATH" \
--libdir="$INSTALL_PATH/lib64" \
ac_cv_prog_f77_v='-###' \
OPENMP_CFLAGS='-Kopenmp'
$ make -j30
- Cross compilation using Fujitsu compiler (AArch64 target).
$ ./configure \
CC="fccpx" \
F77="frtpx" \
CFLAGS='-Nclang -Ofast -ffj-no-fast-matmul' \
FFLAGS='-Kfast' \
--host=aarch64-unknown-linux-gnu \
--build=x86_64-cross-linux-gnu \
--enable-sve \
--enable-armv8-cntvct-el0 \
--enable-fma \
--enable-fortran \
--enable-openmp \
--enable-shared \
--prefix="$INSTALL_PATH" \
--libdir="$INSTALL_PATH/lib64" \
ac_cv_prog_f77_v='-###' \
OPENMP_CFLAGS='-Kopenmp'
$ make -j30
$ make check
$ make install
- Compile with the -L$(INSTALL_PATH)/lib64 option and one of the options listed in the following table after your sources or objects.
FFTW3 libraries | Options |
---|---|
Single precision and sequential version | -lfftw3f -lm |
Single precision and thread-parallel version | -lfftw3f_omp -lfftw3f -lm |
Double precision and sequential version | -lfftw3 -lm |
Double precision and thread-parallel version | -lfftw3_omp -lfftw3 -lm |
- If you specified
--enable-linkfortran
at configure, compile with one of the following options.
FFTW3 libraries | Options |
---|---|
Single precision and sequential version | -lfftw3f_fortran -lm |
Single precision and thread-parallel version | -lfftw3f_fortran_omp -lfftw3f_fortran -lm |
Double precision and sequential version | -lfftw3_fortran -lm |
Double precision and thread-parallel version | -lfftw3_fortran_omp -lfftw3_fortran -lm |
- Case with the single precision and sequential library.
$ fcc a.c -L$(INSTALL_PATH)/lib64 -lfftw3f -lm
- If
--enable-linkfortran
is specified at configure, case with the single precision and sequential library.
$ frt a.f -L$(INSTALL_PATH)/lib64 -lfftw3f_fortran -lm
- See LICENSE file.