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@gmail.com>
This commit is contained in:
parent
f8340f3728
commit
d3c0a816a6
56
fftw.spec
56
fftw.spec
@ -28,6 +28,16 @@ BuildRequires: gcc-gfortran
|
|||||||
%global quad 1
|
%global quad 1
|
||||||
%endif
|
%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
|
# For check phase
|
||||||
BuildRequires: time
|
BuildRequires: time
|
||||||
BuildRequires: perl-interpreter
|
BuildRequires: perl-interpreter
|
||||||
@ -277,11 +287,7 @@ export F77=gfortran
|
|||||||
BASEFLAGS="--enable-shared --disable-dependency-tracking --enable-threads"
|
BASEFLAGS="--enable-shared --disable-dependency-tracking --enable-threads"
|
||||||
BASEFLAGS+=" --enable-openmp"
|
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
|
# Corresponding flags
|
||||||
prec_flags[0]=--enable-single
|
prec_flags[0]=--enable-single
|
||||||
@ -311,11 +317,7 @@ done
|
|||||||
#%endif
|
#%endif
|
||||||
|
|
||||||
# Loop over precisions
|
# Loop over precisions
|
||||||
%if %{quad}
|
for ((iprec=0; iprec<%{nprec}; iprec++)) ; do
|
||||||
for ((iprec=0; iprec<4; iprec++)) ; do
|
|
||||||
%else
|
|
||||||
for ((iprec=0; iprec<3; iprec++)) ; do
|
|
||||||
%endif
|
|
||||||
mkdir ${prec_name[iprec]}${ver_name[iver]}
|
mkdir ${prec_name[iprec]}${ver_name[iver]}
|
||||||
cd ${prec_name[iprec]}${ver_name[iver]}
|
cd ${prec_name[iprec]}${ver_name[iver]}
|
||||||
ln -s ../configure .
|
ln -s ../configure .
|
||||||
@ -330,7 +332,7 @@ done
|
|||||||
for mpi in %{mpi_list} ; do
|
for mpi in %{mpi_list} ; do
|
||||||
module load mpi/${mpi}-%{_arch}
|
module load mpi/${mpi}-%{_arch}
|
||||||
# Loop over precisions - no quad precision support with MPI
|
# 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]}
|
mkdir ${mpi}-${prec_name[iprec]}${ver_name[iver]}
|
||||||
cd ${mpi}-${prec_name[iprec]}${ver_name[iver]}
|
cd ${mpi}-${prec_name[iprec]}${ver_name[iver]}
|
||||||
ln -s ../configure .
|
ln -s ../configure .
|
||||||
@ -351,23 +353,21 @@ for mpi in %{mpi_list} ; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
%prec_names
|
||||||
|
|
||||||
# Explicitly load shell support for the environment-modules package, used
|
# Explicitly load shell support for the environment-modules package, used
|
||||||
# below via 'module' pseudo-command.
|
# below via 'module' pseudo-command.
|
||||||
source /etc/profile.d/modules.sh
|
source /etc/profile.d/modules.sh
|
||||||
|
|
||||||
%if %{quad}
|
for((iprec=0;iprec<%{nprec};iprec++)) ; do
|
||||||
for ver in single double long quad ; do
|
%make_install -C ${prec_name[iprec]}
|
||||||
%else
|
|
||||||
for ver in single double long ; do
|
|
||||||
%endif
|
|
||||||
%make_install -C $ver
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# MPI
|
# MPI
|
||||||
for mpi in %{mpi_list} ; do
|
for mpi in %{mpi_list} ; do
|
||||||
module load mpi/${mpi}-%{_arch}
|
module load mpi/${mpi}-%{_arch}
|
||||||
for ver in single double long ; do
|
for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
|
||||||
%make_install -C ${mpi}-${ver}
|
%make_install -C ${mpi}-${prec_name[iprec]}
|
||||||
# Remove duplicated non-mpi libraries, binaries, and data
|
# Remove duplicated non-mpi libraries, binaries, and data
|
||||||
find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\* -delete
|
find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\* -delete
|
||||||
rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share}
|
rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share}
|
||||||
@ -379,18 +379,15 @@ rm -f %{buildroot}%{_infodir}/dir
|
|||||||
find %{buildroot} -name \*.la -delete
|
find %{buildroot} -name \*.la -delete
|
||||||
|
|
||||||
%check
|
%check
|
||||||
|
%prec_names
|
||||||
# Explicitly load shell support for the environment-modules package, used
|
# Explicitly load shell support for the environment-modules package, used
|
||||||
# below via 'module' pseudo-command.
|
# below via 'module' pseudo-command.
|
||||||
. /etc/profile.d/modules.sh
|
. /etc/profile.d/modules.sh
|
||||||
|
|
||||||
bdir=$(pwd)
|
bdir=$(pwd)
|
||||||
%if %{quad}
|
for((iprec=0;iprec<%{nprec};iprec++)) ; do
|
||||||
for ver in single double long quad ; do
|
export LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
|
||||||
%else
|
%make_build -C ${prec_name[iprec]} check
|
||||||
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
|
done
|
||||||
|
|
||||||
# MPI
|
# MPI
|
||||||
@ -398,9 +395,9 @@ done
|
|||||||
export OMPI_MCA_rmaps_base_oversubscribe=1
|
export OMPI_MCA_rmaps_base_oversubscribe=1
|
||||||
for mpi in %{mpi_list} ; do
|
for mpi in %{mpi_list} ; do
|
||||||
module load mpi/${mpi}-%{_arch}
|
module load mpi/${mpi}-%{_arch}
|
||||||
for ver in single double long ; do
|
for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
|
||||||
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
|
export LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
|
||||||
%make_build -C ${mpi}-${ver}/mpi check
|
%make_build -C ${mpi}-${prec_name[iprec]}/mpi check
|
||||||
done
|
done
|
||||||
module unload mpi/${mpi}-%{_arch}
|
module unload mpi/${mpi}-%{_arch}
|
||||||
done
|
done
|
||||||
@ -527,6 +524,7 @@ done
|
|||||||
* Mon Mar 27 2023 Trent Piepho <tpiepho@gmail.com> - 3.3.10-6
|
* Mon Mar 27 2023 Trent Piepho <tpiepho@gmail.com> - 3.3.10-6
|
||||||
- Enable AVX2 on x86-86
|
- Enable AVX2 on x86-86
|
||||||
- Enable NEON on aarch64
|
- Enable NEON on aarch64
|
||||||
|
- Clean up precision list
|
||||||
|
|
||||||
* Thu Mar 02 2023 Orion Poplawski <orion@nwra.com> - 3.3.10-5
|
* Thu Mar 02 2023 Orion Poplawski <orion@nwra.com> - 3.3.10-5
|
||||||
- Use make macros
|
- Use make macros
|
||||||
|
Loading…
Reference in New Issue
Block a user