The package rpms/fftw.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/fftw.git/commit/?id=6eb89f1df957a...
https://src.fedoraproject.org/cgit/rpms/fftw.git/commit/?id=5f1690a648904...
https://src.fedoraproject.org/cgit/rpms/fftw.git/commit/?id=69d1440b6c54b...
https://src.fedoraproject.org/cgit/rpms/fftw.git/commit/?id=b485c50263acd...
https://src.fedoraproject.org/cgit/rpms/fftw.git/commit/?id=bf5915dfc18c8...
https://src.fedoraproject.org/cgit/rpms/fftw.git/commit/?id=eed891dc9d83d...
https://src.fedoraproject.org/cgit/rpms/fftw.git/commit/?id=424a4518bf4ac....
Change:
+%ifarch s390 s390x
+%ifarch s390 s390x %{ix86}
+%ifarch ppc ppc64
+%ifarch %{arm64}
-%ifarch ppc ppc64
+%ifarch ppc ppc64
-%ifarch %{ix86}
Thanks.
Full change:
============
commit 6eb89f1df957a9faf81f49d2cf9fe6eb176a334d
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Mon Jan 22 14:22:28 2024 +0000
Disable mpich on s390x to fix the build
diff --git a/fftw.spec b/fftw.spec
index 0a7fa56..5afdee5 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -2,7 +2,12 @@
%bcond_with mpich
%bcond_with openmpi
%else
+# TODO check later if we can enable mpich on s390x
+%ifarch s390 s390x
+%bcond_with mpich
+%else
%bcond_without mpich
+%endif
%ifarch s390 s390x %{ix86}
%bcond_with openmpi
%else
@@ -542,7 +547,8 @@ done
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
- Fix i686 build by disabling openmpi
- Fix "The file FFTW3LibraryDepends.cmake is missing" in autotools build
-
https://github.com/FFTW/fftw3/issues/130#issuecomment-1902748460
+
https://github.com/FFTW/fftw3/issues/130#issuecomment-1902748460 (#2193075)
+- Disable mpich on s390x to fix the build
* Thu Jul 27 2023 Lukáš Zaoral <lzaoral(a)redhat.com> - 3.3.10-9
- migrate to SPDX license format
commit 67dac8c0d5c188d538bc5faf2bf59cf3dd93ee7d
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Sun Jan 21 20:25:42 2024 +0000
Fix "The file FFTW3LibraryDepends.cmake is missing" in autotools build
https://github.com/FFTW/fftw3/issues/130#issuecomment-1902748460
diff --git a/fftw.spec b/fftw.spec
index 19f88b0..0a7fa56 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -24,6 +24,7 @@ Summary: A Fast Fourier Transform library
License: GPL-2.0-or-later AND MIT AND BSD-2-Clause
URL:
http://www.fftw.org
Source0:
http://www.fftw.org/fftw-%{version}.tar.gz
+Patch1: fix_autotools_build.patch
BuildRequires: gcc-gfortran
@@ -280,7 +281,7 @@ This package contains the manual for the FFTW fast Fourier transform
library.
%prep
-%setup -q
+%autosetup -p1
%build
%if %{with mpich} || %{with openmpi}
@@ -540,6 +541,8 @@ done
* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> -
3.3.10-10
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
- Fix i686 build by disabling openmpi
+- Fix "The file FFTW3LibraryDepends.cmake is missing" in autotools build
+
https://github.com/FFTW/fftw3/issues/130#issuecomment-1902748460
* Thu Jul 27 2023 Lukáš Zaoral <lzaoral(a)redhat.com> - 3.3.10-9
- migrate to SPDX license format
diff --git a/fix_autotools_build.patch b/fix_autotools_build.patch
new file mode 100644
index 0000000..7bc7696
--- /dev/null
+++ b/fix_autotools_build.patch
@@ -0,0 +1,13 @@
+diff --git a/FFTW3Config.cmake.in b/FFTW3Config.cmake.in
+index 6b1fbc2..e8a2ed8 100644
+--- a/FFTW3Config.cmake.in
++++ b/FFTW3Config.cmake.in
+@@ -10,8 +10,6 @@ set (FFTW3@PREC_SUFFIX@_LIBRARIES fftw3@PREC_SUFFIX@)
+ set (FFTW3@PREC_SUFFIX@_LIBRARY_DIRS @CMAKE_INSTALL_FULL_LIBDIR@)
+ set (FFTW3@PREC_SUFFIX@_INCLUDE_DIRS @CMAKE_INSTALL_FULL_INCLUDEDIR@)
+
+-include ("${CMAKE_CURRENT_LIST_DIR}/FFTW3LibraryDepends.cmake")
+-
+ if (CMAKE_VERSION VERSION_LESS 2.8.3)
+ set (CMAKE_CURRENT_LIST_DIR)
+ endif ()
commit 5f1690a648904274a18e85c51880245772792d11
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Sun Jan 21 20:15:56 2024 +0000
Fix i686 build by disabling openmpi
diff --git a/fftw.spec b/fftw.spec
index c836084..19f88b0 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -3,7 +3,7 @@
%bcond_with openmpi
%else
%bcond_without mpich
-%ifarch s390 s390x
+%ifarch s390 s390x %{ix86}
%bcond_with openmpi
%else
%bcond_without openmpi
@@ -539,6 +539,7 @@ done
%changelog
* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> -
3.3.10-10
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+- Fix i686 build by disabling openmpi
* Thu Jul 27 2023 Lukáš Zaoral <lzaoral(a)redhat.com> - 3.3.10-9
- migrate to SPDX license format
commit 908f3aa8e633a94f1efe03cef03cc7ccf0c477a5
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jan 19 19:15:39 2024 +0000
Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/fftw.spec b/fftw.spec
index 8089dfa..c836084 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -18,7 +18,7 @@
Name: fftw
Version: 3.3.10
-Release: 9%{?dist}
+Release: 10%{?dist}
Summary: A Fast Fourier Transform library
# Generally, the code is under GPL but some headers are also under MIT or BSD:
License: GPL-2.0-or-later AND MIT AND BSD-2-Clause
@@ -537,6 +537,9 @@ done
%endif
%changelog
+* Fri Jan 19 2024 Fedora Release Engineering <releng(a)fedoraproject.org> -
3.3.10-10
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Thu Jul 27 2023 Lukáš Zaoral <lzaoral(a)redhat.com> - 3.3.10-9
- migrate to SPDX license format
commit 7035d6cb00869d3845b53d0392ae94700f3410a6
Author: Lukáš Zaoral <lzaoral(a)redhat.com>
Date: Thu Jul 27 13:10:12 2023 +0200
migrate to SPDX license format
diff --git a/fftw.spec b/fftw.spec
index 07bc6b9..8089dfa 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -18,9 +18,10 @@
Name: fftw
Version: 3.3.10
-Release: 8%{?dist}
+Release: 9%{?dist}
Summary: A Fast Fourier Transform library
-License: GPLv2+
+# Generally, the code is under GPL but some headers are also under MIT or BSD:
+License: GPL-2.0-or-later AND MIT AND BSD-2-Clause
URL:
http://www.fftw.org
Source0:
http://www.fftw.org/fftw-%{version}.tar.gz
@@ -536,6 +537,9 @@ done
%endif
%changelog
+* Thu Jul 27 2023 Lukáš Zaoral <lzaoral(a)redhat.com> - 3.3.10-9
+- migrate to SPDX license format
+
* Wed Jul 19 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.3.10-8
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
commit 67e3eccb15fcecf16c922de0bf0e214b78c50fa0
Author: Yaakov Selkowitz <yselkowi(a)redhat.com>
Date: Tue Jul 18 01:54:00 2023 -0400
Disable mpich, openmpi in RHEL builds
These subpackages are not shipped in RHEL, so there is little value in
building them. A few build fixes were needed for when both are
disabled, since enviroment-modules isn't installed then either.
diff --git a/fftw.spec b/fftw.spec
index 83ff5b4..07bc6b9 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -1,9 +1,14 @@
+%if %{defined rhel}
+%bcond_with mpich
+%bcond_with openmpi
+%else
%bcond_without mpich
%ifarch s390 s390x
%bcond_with openmpi
%else
%bcond_without openmpi
%endif
+%endif
%if %{with mpich}
%global mpi_list %{?mpi_list} mpich
%endif
@@ -277,9 +282,11 @@ library.
%setup -q
%build
+%if %{with mpich} || %{with openmpi}
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
. /etc/profile.d/modules.sh
+%endif
# Configure uses g77 by default, if present on system
export F77=gfortran
@@ -359,9 +366,11 @@ done
%install
%prec_names
+%if %{with mpich} || %{with openmpi}
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
source /etc/profile.d/modules.sh
+%endif
for((iprec=0;iprec<%{nprec};iprec++)) ; do
%make_install -C ${prec_name[iprec]}
@@ -384,9 +393,11 @@ find %{buildroot} -name \*.la -delete
%check
%prec_names
+%if %{with mpich} || %{with openmpi}
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
. /etc/profile.d/modules.sh
+%endif
bdir=$(pwd)
for((iprec=0;iprec<%{nprec};iprec++)) ; do
commit 628be32a6fc6dfe682728af2e2b1cc1238160925
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Wed Jul 19 19:39:02 2023 +0000
Rebuilt for
https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/fftw.spec b/fftw.spec
index 9b08e43..83ff5b4 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -13,7 +13,7 @@
Name: fftw
Version: 3.3.10
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: A Fast Fourier Transform library
License: GPLv2+
URL:
http://www.fftw.org
@@ -525,6 +525,9 @@ done
%endif
%changelog
+* Wed Jul 19 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.3.10-8
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
* Tue Mar 28 2023 David Cantrell <dcantrell(a)redhat.com> - 3.3.10-7
- Rebuild
commit 175ddc1f11e0144178b2b9a5b58178453e0c25ee
Author: David Cantrell <dcantrell(a)redhat.com>
Date: Tue Mar 28 13:00:26 2023 -0400
Rebuild
Signed-off-by: David Cantrell <dcantrell(a)redhat.com>
diff --git a/fftw.spec b/fftw.spec
index dd1e749..9b08e43 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -13,7 +13,7 @@
Name: fftw
Version: 3.3.10
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: A Fast Fourier Transform library
License: GPLv2+
URL:
http://www.fftw.org
@@ -525,6 +525,9 @@ done
%endif
%changelog
+* Tue Mar 28 2023 David Cantrell <dcantrell(a)redhat.com> - 3.3.10-7
+- Rebuild
+
* Mon Mar 27 2023 Trent Piepho <tpiepho(a)gmail.com> - 3.3.10-6
- Enable AVX2 on x86-86
- Enable NEON on aarch64
commit 4c8e7c5e7c7a1a3dc767c331d590065788755f4f
Author: Trent Piepho <tpiepho(a)gmail.com>
Date: Mon Nov 28 11:05:35 2022 -0800
Enable cycle counter on arm64
FFTW needs to measure plan speeds to find an optimal plan. There isn't
cycle counter support on ARM by default. This causes FFTW to silently
fall back to always running in estimate mode.
The CNTVCT_EL0 counter works by default on Linux now, so enable it.
There's an FFTW issue,
https://github.com/FFTW/fftw3/issues/287, to make
this the default, but it has not been acted on.
In my tests, this results in a huge speedup of 2x to 3x.
Signed-off-by: Trent Piepho <tpiepho(a)gmail.com>
diff --git a/fftw.spec b/fftw.spec
index 32a1a34..dd1e749 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -307,6 +307,7 @@ done
for ((i=0; i<2; i++)) ; do
prec_flags[i]+=" --enable-neon"
done
+BASEFLAGS+=" --enable-armv8-cntvct-el0"
%endif
%ifarch ppc ppc64
@@ -531,6 +532,7 @@ done
- Fix for OpenMPI build with < 4 processors
- Fix building with no enabled MPI types
- Enable single precision Altivec on PPC
+- Enable CNTVCT_EL0 support on ARMv8
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
commit 69d1440b6c54b6815d50c147259841eef7899bf8
Author: Trent Piepho <tpiepho(a)gmail.com>
Date: Sun Nov 27 12:37:49 2022 -0800
Enable Altivec for single precision
Altivec only works for single precision.
Signed-off-by: Trent Piepho <tpiepho(a)gmail.com>
diff --git a/fftw.spec b/fftw.spec
index f13434d..32a1a34 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -309,12 +309,12 @@ for ((i=0; i<2; i++)) ; do
done
%endif
-#%ifarch ppc ppc64
-## Compile support for Altivec instructions
-#for ((i=0; i<2; i++)) ; do
-# prec_flags[i]+=" --enable-altivec"
-#done
-#%endif
+%ifarch ppc ppc64
+# Compile support for Altivec instructions; only supported for single precision
+for ((i=0; i<1; i++)) ; do
+ prec_flags[i]+=" --enable-altivec"
+done
+%endif
# Loop over precisions
for ((iprec=0; iprec<%{nprec}; iprec++)) ; do
@@ -530,6 +530,7 @@ done
- Clean up precision list
- Fix for OpenMPI build with < 4 processors
- Fix building with no enabled MPI types
+- Enable single precision Altivec on PPC
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
commit bfa940f6e2a627031c2d4d0dc54e68a3f7b4a9b1
Author: Trent Piepho <tpiepho(a)gmail.com>
Date: Sun Nov 27 12:30:23 2022 -0800
Fix building with no MPI types enabled
If both mpich and openmpi are not used (via --without options) the build
fails. The list of mpi types is undefined in this case, and it is not
referenced correctly to be treated as an empty list.
Signed-off-by: Trent Piepho <tpiepho(a)gmail.com>
diff --git a/fftw.spec b/fftw.spec
index 7bb933d..f13434d 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -329,7 +329,7 @@ for ((iprec=0; iprec<%{nprec}; iprec++)) ; do
done
# MPI Builds - this duplicates the non-mpi builds, but oh well
-for mpi in %{mpi_list} ; do
+for mpi in %{?mpi_list} ; do
module load mpi/${mpi}-%{_arch}
# Loop over precisions - no quad precision support with MPI
for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
@@ -367,7 +367,7 @@ for((iprec=0;iprec<%{nprec};iprec++)) ; do
done
# MPI
-for mpi in %{mpi_list} ; do
+for mpi in %{?mpi_list} ; do
module load mpi/${mpi}-%{_arch}
for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
%make_install -C ${mpi}-${prec_name[iprec]}
@@ -396,7 +396,7 @@ done
# MPI
# Allow oversubscription with openmpi
export OMPI_MCA_rmaps_base_oversubscribe=1
-for mpi in %{mpi_list} ; do
+for mpi in %{?mpi_list} ; do
module load mpi/${mpi}-%{_arch}
for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
export
LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
@@ -529,6 +529,7 @@ done
- Enable NEON on aarch64
- Clean up precision list
- Fix for OpenMPI build with < 4 processors
+- Fix building with no enabled MPI types
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
commit 1510cc6f3b32a7303e1020881d13f5b532a9d050
Author: Trent Piepho <tpiepho(a)gmail.com>
Date: Sun Nov 27 12:25:17 2022 -0800
Allow openmpi tests on systems with less than 4 processors
The MPI tests use up to four processes. By default, OpenMPI won't allow
more processes than processors and the tests will fail on a two
processor VM. Using the --oversubscribe option will allow the tests to
run.
mpich doesn't have this limit by default and doesn't need or support
this option.
Signed-off-by: Trent Piepho <tpiepho(a)gmail.com>
diff --git a/fftw.spec b/fftw.spec
index 0e8e988..7bb933d 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -339,6 +339,9 @@ for mpi in %{mpi_list} ; do
# Force linking the _mpi.so libraries with the mpi libs. This works because
# we get rid of all of the non-mpi components of these builds
export CC=mpicc
+ if [ $mpi = "openmpi" ]; then
+ export MPIRUN="mpirun --oversubscribe"
+ fi
%{configure} ${BASEFLAGS} ${prec_flags[iprec]} \
--enable-mpi \
--libdir=%{_libdir}/$mpi/lib \
@@ -525,6 +528,7 @@ done
- Enable AVX2 on x86-86
- Enable NEON on aarch64
- Clean up precision list
+- Fix for OpenMPI build with < 4 processors
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
commit b95d40960b903a673e6e1a0065a43e72feb9305e
Author: Trent Piepho <tpiepho(a)gmail.com>
Date: Sun Nov 27 12:09:31 2022 -0800
Reduce precision list duplication
Use the same list of precision names when building MPI versions as well
as the install and check stages.
Instead of having two for loops, one for quad support and one without,
just have one loop and make the number of precisions a macro.
Signed-off-by: Trent Piepho <tpiepho(a)gmail.com>
diff --git a/fftw.spec b/fftw.spec
index a6e98eb..0e8e988 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -28,6 +28,16 @@ BuildRequires: gcc-gfortran
%global quad 1
%endif
+# Names of precisions to (maybe) build
+%global prec_names
prec_name[0]=single;prec_name[1]=double;prec_name[2]=long;prec_name[3]=quad
+# Number of precisions to build; sometimes quad is not possible
+%global nprec 3
+%if %{quad}
+%global nprec 4
+%endif
+# Number of precisions to build for MPI
+%global nmpiprec 3
+
# For check phase
BuildRequires: time
BuildRequires: perl-interpreter
@@ -277,11 +287,7 @@ export F77=gfortran
BASEFLAGS="--enable-shared --disable-dependency-tracking --enable-threads"
BASEFLAGS+=" --enable-openmp"
-# Precisions to build
-prec_name[0]=single
-prec_name[1]=double
-prec_name[2]=long
-prec_name[3]=quad
+%prec_names
# Corresponding flags
prec_flags[0]=--enable-single
@@ -311,11 +317,7 @@ done
#%endif
# Loop over precisions
-%if %{quad}
-for ((iprec=0; iprec<4; iprec++)) ; do
-%else
-for ((iprec=0; iprec<3; iprec++)) ; do
-%endif
+for ((iprec=0; iprec<%{nprec}; iprec++)) ; do
mkdir ${prec_name[iprec]}${ver_name[iver]}
cd ${prec_name[iprec]}${ver_name[iver]}
ln -s ../configure .
@@ -330,7 +332,7 @@ done
for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
# Loop over precisions - no quad precision support with MPI
- for((iprec=0;iprec<3;iprec++)) ; do
+ for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
mkdir ${mpi}-${prec_name[iprec]}${ver_name[iver]}
cd ${mpi}-${prec_name[iprec]}${ver_name[iver]}
ln -s ../configure .
@@ -351,23 +353,21 @@ for mpi in %{mpi_list} ; do
done
%install
+%prec_names
+
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
source /etc/profile.d/modules.sh
-%if %{quad}
-for ver in single double long quad ; do
-%else
-for ver in single double long ; do
-%endif
- %make_install -C $ver
+for((iprec=0;iprec<%{nprec};iprec++)) ; do
+ %make_install -C ${prec_name[iprec]}
done
# MPI
for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
- for ver in single double long ; do
- %make_install -C ${mpi}-${ver}
+ for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
+ %make_install -C ${mpi}-${prec_name[iprec]}
# Remove duplicated non-mpi libraries, binaries, and data
find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\*
-delete
rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share}
@@ -379,18 +379,15 @@ rm -f %{buildroot}%{_infodir}/dir
find %{buildroot} -name \*.la -delete
%check
+%prec_names
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
. /etc/profile.d/modules.sh
bdir=$(pwd)
-%if %{quad}
-for ver in single double long quad ; do
-%else
-for ver in single double long ; do
-%endif
- export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
- %make_build -C $ver check
+for((iprec=0;iprec<%{nprec};iprec++)) ; do
+ export
LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
+ %make_build -C ${prec_name[iprec]} check
done
# MPI
@@ -398,9 +395,9 @@ done
export OMPI_MCA_rmaps_base_oversubscribe=1
for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
- for ver in single double long ; do
- export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
- %make_build -C ${mpi}-${ver}/mpi check
+ for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
+ export
LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
+ %make_build -C ${mpi}-${prec_name[iprec]}/mpi check
done
module unload mpi/${mpi}-%{_arch}
done
@@ -527,6 +524,7 @@ done
* Mon Mar 27 2023 Trent Piepho <tpiepho(a)gmail.com> - 3.3.10-6
- Enable AVX2 on x86-86
- Enable NEON on aarch64
+- Clean up precision list
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
commit b485c50263acd67a5803699f2df3f8e233eb831e
Author: Trent Piepho <tpiepho(a)gmail.com>
Date: Fri Nov 25 23:49:56 2022 -0800
Enable NEON on aarch64
The original reason NEON was disabled was lack of runtime detection. It
should be runtime detected on Linux.
NEON is also required for ARMv8, so it's reasonable to expect every
aarch64 host to have it. FFTW should still work without NEON, but I
don't know of any aarch64 CPU without it to test this on.
Signed-off-by: Trent Piepho <tpiepho(a)gmail.com>
diff --git a/fftw.spec b/fftw.spec
index 20355f6..a6e98eb 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -296,13 +296,12 @@ for ((i=0; i<2; i++)) ; do
done
%endif
-# No NEON run time detection, not all ARM SoCs have NEON
-#%ifarch %{arm}
-## Compile support for NEON instructions
-#for ((i=0; i<2; i++)) ; do
-# prec_flags[i]+=" --enable-neon"
-#done
-#%endif
+%ifarch %{arm64}
+# Compile support for NEON instructions
+for ((i=0; i<2; i++)) ; do
+ prec_flags[i]+=" --enable-neon"
+done
+%endif
#%ifarch ppc ppc64
## Compile support for Altivec instructions
@@ -527,6 +526,7 @@ done
%changelog
* Mon Mar 27 2023 Trent Piepho <tpiepho(a)gmail.com> - 3.3.10-6
- Enable AVX2 on x86-86
+- Enable NEON on aarch64
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
commit 2045b0e1e5383f2efafea92fc36470d3fb57eb2a
Author: Trent Piepho <tpiepho(a)gmail.com>
Date: Thu Nov 3 13:34:45 2022 -0700
Enable AVX2
FFTW does runtime detection of CPU features on x86, so this change does
not require AVX2 support to use the libraries, but does allow FFTW to
use the AVX2 code when the CPU supports it.
Signed-off-by: Trent Piepho <tpiepho(a)gmail.com>
diff --git a/fftw.spec b/fftw.spec
index a0da8bb..20355f6 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -13,7 +13,7 @@
Name: fftw
Version: 3.3.10
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: A Fast Fourier Transform library
License: GPLv2+
URL:
http://www.fftw.org
@@ -292,7 +292,7 @@ prec_flags[3]=--enable-quad-precision
%ifarch x86_64
# Enable SSE2 and AVX support for x86_64
for ((i=0; i<2; i++)) ; do
- prec_flags[i]+=" --enable-sse2 --enable-avx"
+ prec_flags[i]+=" --enable-sse2 --enable-avx --enable-avx2"
done
%endif
@@ -525,6 +525,9 @@ done
%endif
%changelog
+* Mon Mar 27 2023 Trent Piepho <tpiepho(a)gmail.com> - 3.3.10-6
+- Enable AVX2 on x86-86
+
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
- Drop openmpi vader workaround
commit bf5915dfc18c83d6fdcb12047a14965104d72810
Author: David Cantrell <dcantrell(a)redhat.com>
Date: Mon Mar 27 12:04:32 2023 -0400
Revert "Enable AVX2 on x86_64"
This reverts commit eed891dc9d83d3dbd491fa8b7bf41095dbdf9102.
diff --git a/fftw.spec b/fftw.spec
index c083d1a..a0da8bb 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -13,7 +13,7 @@
Name: fftw
Version: 3.3.10
-Release: 6%{?dist}
+Release: 5%{?dist}
Summary: A Fast Fourier Transform library
License: GPLv2+
URL:
http://www.fftw.org
@@ -28,16 +28,6 @@ BuildRequires: gcc-gfortran
%global quad 1
%endif
-# Names of precisions to (maybe) build
-%global prec_names
prec_name[0]=single;prec_name[1]=double;prec_name[2]=long;prec_name[3]=quad
-# Number of precisions to build; sometimes quad is not possible
-%global nprec 3
-%if %{quad}
-%global nprec 4
-%endif
-# Number of precisions to build for MPI
-%global nmpiprec 3
-
# For check phase
BuildRequires: time
BuildRequires: perl-interpreter
@@ -288,7 +278,10 @@ BASEFLAGS="--enable-shared --disable-dependency-tracking
--enable-threads"
BASEFLAGS+=" --enable-openmp"
# Precisions to build
-%prec_names
+prec_name[0]=single
+prec_name[1]=double
+prec_name[2]=long
+prec_name[3]=quad
# Corresponding flags
prec_flags[0]=--enable-single
@@ -299,27 +292,31 @@ prec_flags[3]=--enable-quad-precision
%ifarch x86_64
# Enable SSE2 and AVX support for x86_64
for ((i=0; i<2; i++)) ; do
- prec_flags[i]+=" --enable-sse2 --enable-avx --enable-avx2"
-done
-%endif
-
-%ifarch %{arm64}
-# Compile support for NEON instructions
-for ((i=0; i<2; i++)) ; do
- prec_flags[i]+=" --enable-neon"
+ prec_flags[i]+=" --enable-sse2 --enable-avx"
done
-BASEFLAGS+=" --enable-armv8-cntvct-el0"
%endif
-%ifarch ppc ppc64
-# Compile support for Altivec instructions; only supported for single precision
-for ((i=0; i<1; i++)) ; do
- prec_flags[i]+=" --enable-altivec"
-done
-%endif
+# No NEON run time detection, not all ARM SoCs have NEON
+#%ifarch %{arm}
+## Compile support for NEON instructions
+#for ((i=0; i<2; i++)) ; do
+# prec_flags[i]+=" --enable-neon"
+#done
+#%endif
+
+#%ifarch ppc ppc64
+## Compile support for Altivec instructions
+#for ((i=0; i<2; i++)) ; do
+# prec_flags[i]+=" --enable-altivec"
+#done
+#%endif
# Loop over precisions
-for ((iprec=0; iprec<%{nprec}; iprec++)) ; do
+%if %{quad}
+for ((iprec=0; iprec<4; iprec++)) ; do
+%else
+for ((iprec=0; iprec<3; iprec++)) ; do
+%endif
mkdir ${prec_name[iprec]}${ver_name[iver]}
cd ${prec_name[iprec]}${ver_name[iver]}
ln -s ../configure .
@@ -331,19 +328,16 @@ for ((iprec=0; iprec<%{nprec}; iprec++)) ; do
done
# MPI Builds - this duplicates the non-mpi builds, but oh well
-for mpi in %{?mpi_list} ; do
+for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
# Loop over precisions - no quad precision support with MPI
- for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
+ for((iprec=0;iprec<3;iprec++)) ; do
mkdir ${mpi}-${prec_name[iprec]}${ver_name[iver]}
cd ${mpi}-${prec_name[iprec]}${ver_name[iver]}
ln -s ../configure .
# Force linking the _mpi.so libraries with the mpi libs. This works because
# we get rid of all of the non-mpi components of these builds
export CC=mpicc
- if [ $mpi = "openmpi" ]; then
- export MPIRUN="mpirun --oversubscribe"
- fi
%{configure} ${BASEFLAGS} ${prec_flags[iprec]} \
--enable-mpi \
--libdir=%{_libdir}/$mpi/lib \
@@ -358,21 +352,23 @@ for mpi in %{?mpi_list} ; do
done
%install
-%prec_names
-
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
source /etc/profile.d/modules.sh
-for((iprec=0;iprec<%{nprec};iprec++)) ; do
- %make_install -C ${prec_name[iprec]}
+%if %{quad}
+for ver in single double long quad ; do
+%else
+for ver in single double long ; do
+%endif
+ %make_install -C $ver
done
# MPI
-for mpi in %{?mpi_list} ; do
+for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
- for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
- %make_install -C ${mpi}-${prec_name[iprec]}
+ for ver in single double long ; do
+ %make_install -C ${mpi}-${ver}
# Remove duplicated non-mpi libraries, binaries, and data
find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\*
-delete
rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share}
@@ -384,25 +380,28 @@ rm -f %{buildroot}%{_infodir}/dir
find %{buildroot} -name \*.la -delete
%check
-%prec_names
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
. /etc/profile.d/modules.sh
bdir=$(pwd)
-for((iprec=0;iprec<%{nprec};iprec++)) ; do
- export
LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
- %make_build -C ${prec_name[iprec]} check
+%if %{quad}
+for ver in single double long quad ; do
+%else
+for ver in single double long ; do
+%endif
+ export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
+ %make_build -C $ver check
done
# MPI
# Allow oversubscription with openmpi
export OMPI_MCA_rmaps_base_oversubscribe=1
-for mpi in %{?mpi_list} ; do
+for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
- for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
- export
LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
- %make_build -C ${mpi}-${prec_name[iprec]}/mpi check
+ for ver in single double long ; do
+ export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
+ %make_build -C ${mpi}-${ver}/mpi check
done
module unload mpi/${mpi}-%{_arch}
done
@@ -526,15 +525,6 @@ done
%endif
%changelog
-* Mon Mar 27 2023 David cantrell <dcantrell(a)redhat.com> - 3.3.10-6
-- Enable AVX2 on x86_64
-- Enable NEON on aarch64
-- Clean up precision list
-- Fix for OpenMPI build with < 4 processors
-- Fix building with no enabled MPI types
-- Enable single precision Altivec on PPC
-- Enable CNTVCT_EL0 cycle counter support on aarch64
-
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
- Drop openmpi vader workaround
commit 605e9a53b5d30e3fe6049df1b1b5cbbc3c5ae36c
Merge: 27e99e7 eed891d
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Tue Jan 23 23:01:19 2024 +0000
Merge commit 'eed891d' into f38
commit eed891dc9d83d3dbd491fa8b7bf41095dbdf9102
Author: David Cantrell <dcantrell(a)redhat.com>
Date: Mon Mar 27 10:31:36 2023 -0400
Enable AVX2 on x86_64
Enable NEON on aarch64
Clean up precision list
Fix for OpenMPI build with < 4 processors
Fix building with no enabled MPI types
Enable single precision Altivec on PPC
Enable CNTVCT_EL0 cycle counter support on aarch64
Signed-off-by: David Cantrell <dcantrell(a)redhat.com>
diff --git a/fftw.spec b/fftw.spec
index a0da8bb..c083d1a 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -13,7 +13,7 @@
Name: fftw
Version: 3.3.10
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: A Fast Fourier Transform library
License: GPLv2+
URL:
http://www.fftw.org
@@ -28,6 +28,16 @@ BuildRequires: gcc-gfortran
%global quad 1
%endif
+# Names of precisions to (maybe) build
+%global prec_names
prec_name[0]=single;prec_name[1]=double;prec_name[2]=long;prec_name[3]=quad
+# Number of precisions to build; sometimes quad is not possible
+%global nprec 3
+%if %{quad}
+%global nprec 4
+%endif
+# Number of precisions to build for MPI
+%global nmpiprec 3
+
# For check phase
BuildRequires: time
BuildRequires: perl-interpreter
@@ -278,10 +288,7 @@ BASEFLAGS="--enable-shared --disable-dependency-tracking
--enable-threads"
BASEFLAGS+=" --enable-openmp"
# Precisions to build
-prec_name[0]=single
-prec_name[1]=double
-prec_name[2]=long
-prec_name[3]=quad
+%prec_names
# Corresponding flags
prec_flags[0]=--enable-single
@@ -292,31 +299,27 @@ prec_flags[3]=--enable-quad-precision
%ifarch x86_64
# Enable SSE2 and AVX support for x86_64
for ((i=0; i<2; i++)) ; do
- prec_flags[i]+=" --enable-sse2 --enable-avx"
+ prec_flags[i]+=" --enable-sse2 --enable-avx --enable-avx2"
done
%endif
-# No NEON run time detection, not all ARM SoCs have NEON
-#%ifarch %{arm}
-## Compile support for NEON instructions
-#for ((i=0; i<2; i++)) ; do
-# prec_flags[i]+=" --enable-neon"
-#done
-#%endif
-
-#%ifarch ppc ppc64
-## Compile support for Altivec instructions
-#for ((i=0; i<2; i++)) ; do
-# prec_flags[i]+=" --enable-altivec"
-#done
-#%endif
+%ifarch %{arm64}
+# Compile support for NEON instructions
+for ((i=0; i<2; i++)) ; do
+ prec_flags[i]+=" --enable-neon"
+done
+BASEFLAGS+=" --enable-armv8-cntvct-el0"
+%endif
-# Loop over precisions
-%if %{quad}
-for ((iprec=0; iprec<4; iprec++)) ; do
-%else
-for ((iprec=0; iprec<3; iprec++)) ; do
+%ifarch ppc ppc64
+# Compile support for Altivec instructions; only supported for single precision
+for ((i=0; i<1; i++)) ; do
+ prec_flags[i]+=" --enable-altivec"
+done
%endif
+
+# Loop over precisions
+for ((iprec=0; iprec<%{nprec}; iprec++)) ; do
mkdir ${prec_name[iprec]}${ver_name[iver]}
cd ${prec_name[iprec]}${ver_name[iver]}
ln -s ../configure .
@@ -328,16 +331,19 @@ for ((iprec=0; iprec<3; iprec++)) ; do
done
# MPI Builds - this duplicates the non-mpi builds, but oh well
-for mpi in %{mpi_list} ; do
+for mpi in %{?mpi_list} ; do
module load mpi/${mpi}-%{_arch}
# Loop over precisions - no quad precision support with MPI
- for((iprec=0;iprec<3;iprec++)) ; do
+ for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
mkdir ${mpi}-${prec_name[iprec]}${ver_name[iver]}
cd ${mpi}-${prec_name[iprec]}${ver_name[iver]}
ln -s ../configure .
# Force linking the _mpi.so libraries with the mpi libs. This works because
# we get rid of all of the non-mpi components of these builds
export CC=mpicc
+ if [ $mpi = "openmpi" ]; then
+ export MPIRUN="mpirun --oversubscribe"
+ fi
%{configure} ${BASEFLAGS} ${prec_flags[iprec]} \
--enable-mpi \
--libdir=%{_libdir}/$mpi/lib \
@@ -352,23 +358,21 @@ for mpi in %{mpi_list} ; do
done
%install
+%prec_names
+
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
source /etc/profile.d/modules.sh
-%if %{quad}
-for ver in single double long quad ; do
-%else
-for ver in single double long ; do
-%endif
- %make_install -C $ver
+for((iprec=0;iprec<%{nprec};iprec++)) ; do
+ %make_install -C ${prec_name[iprec]}
done
# MPI
-for mpi in %{mpi_list} ; do
+for mpi in %{?mpi_list} ; do
module load mpi/${mpi}-%{_arch}
- for ver in single double long ; do
- %make_install -C ${mpi}-${ver}
+ for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
+ %make_install -C ${mpi}-${prec_name[iprec]}
# Remove duplicated non-mpi libraries, binaries, and data
find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\*
-delete
rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share}
@@ -380,28 +384,25 @@ rm -f %{buildroot}%{_infodir}/dir
find %{buildroot} -name \*.la -delete
%check
+%prec_names
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
. /etc/profile.d/modules.sh
bdir=$(pwd)
-%if %{quad}
-for ver in single double long quad ; do
-%else
-for ver in single double long ; do
-%endif
- export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
- %make_build -C $ver check
+for((iprec=0;iprec<%{nprec};iprec++)) ; do
+ export
LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
+ %make_build -C ${prec_name[iprec]} check
done
# MPI
# Allow oversubscription with openmpi
export OMPI_MCA_rmaps_base_oversubscribe=1
-for mpi in %{mpi_list} ; do
+for mpi in %{?mpi_list} ; do
module load mpi/${mpi}-%{_arch}
- for ver in single double long ; do
- export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
- %make_build -C ${mpi}-${ver}/mpi check
+ for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
+ export
LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
+ %make_build -C ${mpi}-${prec_name[iprec]}/mpi check
done
module unload mpi/${mpi}-%{_arch}
done
@@ -525,6 +526,15 @@ done
%endif
%changelog
+* Mon Mar 27 2023 David cantrell <dcantrell(a)redhat.com> - 3.3.10-6
+- Enable AVX2 on x86_64
+- Enable NEON on aarch64
+- Clean up precision list
+- Fix for OpenMPI build with < 4 processors
+- Fix building with no enabled MPI types
+- Enable single precision Altivec on PPC
+- Enable CNTVCT_EL0 cycle counter support on aarch64
+
* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
- Use make macros
- Drop openmpi vader workaround
commit 424a4518bf4ac5c7e255e62cdedbc59585205811
Author: Orion Poplawski <orion(a)nwra.com>
Date: Wed Mar 1 21:33:51 2023 -0700
Use make macros
Drop openmpi vader workaround
diff --git a/fftw.spec b/fftw.spec
index 55502d5..a0da8bb 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -13,7 +13,7 @@
Name: fftw
Version: 3.3.10
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: A Fast Fourier Transform library
License: GPLv2+
URL:
http://www.fftw.org
@@ -323,7 +323,7 @@ for ((iprec=0; iprec<3; iprec++)) ; do
%{configure} ${BASEFLAGS} ${prec_flags[iprec]}
sed -i
's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g'
libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
- make %{?_smp_mflags}
+ %make_build
cd ..
done
@@ -345,7 +345,7 @@ for mpi in %{mpi_list} ; do
--sbindir=%{_libdir}/$mpi/sbin \
--includedir=%{_includedir}/$mpi-%{_arch} \
--mandir=%{_libdir}/$mpi/share/man
- make %{?_smp_mflags}
+ %make_build
cd ..
done
module unload mpi/${mpi}-%{_arch}
@@ -361,14 +361,14 @@ for ver in single double long quad ; do
%else
for ver in single double long ; do
%endif
- make -C $ver install DESTDIR=%{buildroot}
+ %make_install -C $ver
done
# MPI
for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
for ver in single double long ; do
- make -C ${mpi}-${ver} install DESTDIR=%{buildroot}
+ %make_install -C ${mpi}-${ver}
# Remove duplicated non-mpi libraries, binaries, and data
find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\*
-delete
rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share}
@@ -391,24 +391,17 @@ for ver in single double long quad ; do
for ver in single double long ; do
%endif
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
- make %{?_smp_mflags} -C $ver check
+ %make_build -C $ver check
done
# MPI
-%if %{with openmpi}
-%ifarch %{ix86}
-# disable Open MPI's vader byte transfer layer while running tests on 32-bit x86
platforms
-# as it is known to be troublesome <
https://github.com/open-mpi/ompi/issues/4260>
-export OMPI_MCA_btl="^vader"
-%endif
-%endif
# Allow oversubscription with openmpi
export OMPI_MCA_rmaps_base_oversubscribe=1
for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
for ver in single double long ; do
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
- make %{?_smp_mflags} -C ${mpi}-${ver}/mpi check
+ %make_build -C ${mpi}-${ver}/mpi check
done
module unload mpi/${mpi}-%{_arch}
done
@@ -532,6 +525,10 @@ done
%endif
%changelog
+* Thu Mar 02 2023 Orion Poplawski <orion(a)nwra.com> - 3.3.10-5
+- Use make macros
+- Drop openmpi vader workaround
+
* Thu Jan 19 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.3.10-4
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
commit d5894d8375ccff489c4bad21c8a61d54c40cb531
Author: Orion Poplawski <orion(a)nwra.com>
Date: Sun Feb 19 14:32:11 2023 -0700
Allow oversubscription with openmpi
diff --git a/fftw.spec b/fftw.spec
index 00791a3..55502d5 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -402,6 +402,8 @@ done
export OMPI_MCA_btl="^vader"
%endif
%endif
+# Allow oversubscription with openmpi
+export OMPI_MCA_rmaps_base_oversubscribe=1
for mpi in %{mpi_list} ; do
module load mpi/${mpi}-%{_arch}
for ver in single double long ; do