317 lines
10 KiB
RPMSpec
317 lines
10 KiB
RPMSpec
%{!?_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}}
|
|
|
|
Summary: High-performance library for parallel solution of eigenvalue problems
|
|
Name: elpa
|
|
Version: 2015.02.002
|
|
Release: 6%{?dist}
|
|
URL: http://elpa.rzg.mpg.de/
|
|
Source0: http://elpa.rzg.mpg.de/elpa-%{version}.tar.gz
|
|
# fix pkgconfig file
|
|
# use all CPUs for testsuite
|
|
# don't add -mavx to CFLAGS if it doesn't work (i.e. on arm)
|
|
Patch1: elpa-rpm.patch
|
|
# build against atlas instead of reference blas
|
|
Patch2: elpa-atlas.patch
|
|
# don't use AVX instructions in test binaries
|
|
Patch3: elpa-no-avx.patch
|
|
License: LGPLv3+
|
|
BuildRequires: atlas-devel
|
|
BuildRequires: gcc-gfortran
|
|
BuildRequires: libtool
|
|
%ifnarch aarch64 ppc64le
|
|
BuildRequires: /usr/bin/execstack
|
|
%endif
|
|
|
|
%description
|
|
ELPA is a Fortran-based high-performance computational library for the
|
|
(massively) parallel solution of symmetric or Hermitian, standard or generalized
|
|
eigenvalue problems.
|
|
|
|
This is the kind of eigenvalue problem which is frequently encountered in
|
|
Electronic Structure Theory (solution of Schrödinger's Equation or variants
|
|
thereof), but also in many other fields. Typically, the solution effort scales
|
|
as O(size^3), where "size" is a measure of the system size, for example the
|
|
dimension of the associated matrices or the number of required
|
|
eigenvalue/eigenvector pairs (less than or equal to the matrix dimension). Thus,
|
|
an algebraically exact solution of the eigenproblem may quickly become the
|
|
bottleneck in a practical application.
|
|
|
|
%package common
|
|
Summary: Common files for ELPA
|
|
BuildArch: noarch
|
|
|
|
%description common
|
|
ELPA is a Fortran-based high-performance computational library for the
|
|
(massively) parallel solution of symmetric or Hermitian, standard or generalized
|
|
eigenvalue problems.
|
|
|
|
This package contains common files for ELPA.
|
|
|
|
%package devel
|
|
Summary: C header files for ELPA
|
|
BuildArch: noarch
|
|
Requires: %{name}-mpi-devel = %{version}-%{release}
|
|
|
|
%description devel
|
|
ELPA is a Fortran-based high-performance computational library for the
|
|
(massively) parallel solution of symmetric or Hermitian, standard or generalized
|
|
eigenvalue problems.
|
|
|
|
This package contains the C header files for ELPA.
|
|
|
|
%package mpich
|
|
Summary: Fast library for parallel solution of eigenvalue problems (MPICH version)
|
|
BuildRequires: mpich-devel
|
|
BuildRequires: blacs-mpich-devel
|
|
BuildRequires: scalapack-mpich-devel
|
|
Requires: blacs-mpich
|
|
Requires: scalapack-mpich
|
|
Requires: %{name}-common = %{version}-%{release}
|
|
|
|
%description mpich
|
|
ELPA is a Fortran-based high-performance computational library for the
|
|
(massively) parallel solution of symmetric or Hermitian, standard or generalized
|
|
eigenvalue problems.
|
|
|
|
This package contains ELPA built against MPICH.
|
|
|
|
%package mpich-devel
|
|
Summary: Development files for ELPA (MPICH version)
|
|
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
|
|
Requires: gcc-gfortran%{?_isa}
|
|
Requires: %{name}-devel = %{version}-%{release}
|
|
Provides: %{name}-mpi-devel = %{version}-%{release}
|
|
|
|
%description mpich-devel
|
|
ELPA is a Fortran-based high-performance computational library for the
|
|
(massively) parallel solution of symmetric or Hermitian, standard or generalized
|
|
eigenvalue problems.
|
|
|
|
This package contains the development files for ELPA (MPICH version).
|
|
|
|
%package openmpi
|
|
Summary: Fast library for parallel solution of eigenvalue problems (OpenMPI version)
|
|
# required for running the testsuite
|
|
BuildRequires: rsh
|
|
BuildRequires: openmpi-devel
|
|
BuildRequires: blacs-openmpi-devel
|
|
BuildRequires: scalapack-openmpi-devel
|
|
Requires: blacs-openmpi
|
|
Requires: scalapack-openmpi
|
|
Requires: %{name}-common = %{version}-%{release}
|
|
|
|
%description openmpi
|
|
ELPA is a Fortran-based high-performance computational library for the
|
|
(massively) parallel solution of symmetric or Hermitian, standard or generalized
|
|
eigenvalue problems.
|
|
|
|
This package contains ELPA built against OpenMPI.
|
|
|
|
%package openmpi-devel
|
|
Summary: Development files for ELPA (OpenMPI version)
|
|
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
|
|
Requires: gcc-gfortran%{?_isa}
|
|
Requires: %{name}-devel = %{version}-%{release}
|
|
Provides: %{name}-mpi-devel = %{version}-%{release}
|
|
|
|
%description openmpi-devel
|
|
ELPA is a Fortran-based high-performance computational library for the
|
|
(massively) parallel solution of symmetric or Hermitian, standard or generalized
|
|
eigenvalue problems.
|
|
|
|
This package contains the development files for ELPA (OpenMPI version).
|
|
|
|
%prep
|
|
%setup -q -c -T -a 0
|
|
mv elpa-%{version} mpich
|
|
pushd mpich
|
|
%patch1 -p1 -b .r
|
|
%patch2 -p1 -b .atlas
|
|
%patch3 -p1 -b .avx
|
|
autoreconf -vifs
|
|
popd
|
|
cp -pr mpich openmpi
|
|
mkdir _openmp
|
|
cp -pr mpich openmpi _openmp/
|
|
|
|
%build
|
|
export FCFLAGS=-ffree-line-length-none
|
|
|
|
%{_mpich_load}
|
|
export LDFLAGS="-L%{_libdir}/atlas -L$MPI_LIB"
|
|
pushd mpich
|
|
%configure --disable-silent-rules --disable-static \
|
|
--libdir=%{_libdir}/mpich%{?_opt_cc_suffix}/lib
|
|
|
|
make %{?_smp_mflags} V=1
|
|
popd
|
|
|
|
pushd _openmp/mpich
|
|
%configure --disable-silent-rules --disable-static \
|
|
--with-openmp \
|
|
--libdir=%{_libdir}/mpich%{?_opt_cc_suffix}/lib
|
|
|
|
make %{?_smp_mflags} V=1
|
|
popd
|
|
%{_mpich_unload}
|
|
|
|
%{_openmpi_load}
|
|
export LDFLAGS="-L%{_libdir}/atlas -L$MPI_LIB"
|
|
pushd openmpi
|
|
%configure --disable-silent-rules --disable-static \
|
|
--libdir=%{_libdir}/openmpi%{?_opt_cc_suffix}/lib
|
|
|
|
make %{?_smp_mflags} V=1
|
|
popd
|
|
|
|
pushd _openmp/openmpi
|
|
%configure --disable-silent-rules --disable-static \
|
|
--with-openmp \
|
|
--libdir=%{_libdir}/openmpi%{?_opt_cc_suffix}/lib
|
|
|
|
make %{?_smp_mflags} V=1
|
|
popd
|
|
%{_openmpi_unload}
|
|
|
|
%install
|
|
for s in '' _openmp ; do
|
|
for mpi in mpich openmpi ; do
|
|
pushd ${s:-.}/${mpi}
|
|
make DESTDIR=%{buildroot} install
|
|
rm %{buildroot}%{_bindir}/elpa?_test_*
|
|
mkdir -p %{buildroot}%{_libdir}/${mpi}%{?_opt_cc_suffix}/bin
|
|
mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}%{_libdir}/${mpi}%{?_opt_cc_suffix}/bin/
|
|
%ifnarch aarch64 ppc64le
|
|
execstack -c .libs/libelpa${s}.so.?.* %{buildroot}%{_libdir}/${mpi}%{?_opt_cc_suffix}/lib/libelpa${s}.so.?.*
|
|
%endif
|
|
mkdir -p %{buildroot}%{_fmoddir}/${mpi}%{?_opt_cc_suffix}
|
|
for f in $(ls -1 %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/*.mod) ; do
|
|
m=$(basename ${f} .mod)
|
|
mv %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/${m}.mod %{buildroot}%{_fmoddir}/${mpi}%{?_cc_name_suffix}/${m}${s}.mod
|
|
done
|
|
rm %{buildroot}%{_libdir}/${mpi}%{?_opt_cc_suffix}/lib/libelpa${s}.la
|
|
# fix-up fcflags include path per mpi implementation
|
|
sed -i -e "/^fcflags.*modules/s,/modules,/modules/${mpi}," %{buildroot}%{_libdir}/${mpi}/lib/pkgconfig/elpa${s}-%{version}.pc
|
|
popd
|
|
done
|
|
done
|
|
|
|
%if 1
|
|
%check
|
|
%{_mpich_load}
|
|
pushd mpich
|
|
make check V=1 || cat ./test-suite.log
|
|
popd
|
|
pushd _openmp/mpich
|
|
make check V=1 || cat ./test-suite.log
|
|
popd
|
|
%{_mpich_unload}
|
|
|
|
# only non-mt openmpi build can be tested, see bug #1105902
|
|
%{_openmpi_load}
|
|
pushd openmpi
|
|
make check V=1 || cat ./test-suite.log
|
|
popd
|
|
%{_openmpi_unload}
|
|
%endif
|
|
|
|
%post mpich -p /sbin/ldconfig
|
|
|
|
%postun mpich -p /sbin/ldconfig
|
|
|
|
%post openmpi -p /sbin/ldconfig
|
|
|
|
%postun openmpi -p /sbin/ldconfig
|
|
|
|
%files common
|
|
%license %{_pkgdocdir}/COPYING
|
|
%license %{_pkgdocdir}/gpl.txt
|
|
%license %{_pkgdocdir}/lgpl.txt
|
|
%{_pkgdocdir}/README
|
|
|
|
%files devel
|
|
%{_includedir}/elpa-%{version}
|
|
%{_includedir}/elpa_openmp-%{version}
|
|
%{_pkgdocdir}/examples
|
|
|
|
%files mpich
|
|
%{_libdir}/mpich%{?_opt_cc_suffix}/bin/elpa2_print_kernels
|
|
%{_libdir}/mpich%{?_opt_cc_suffix}/bin/elpa2_print_kernels_openmp
|
|
%{_libdir}/mpich%{?_opt_cc_suffix}/lib/libelpa.so.3*
|
|
%{_libdir}/mpich%{?_opt_cc_suffix}/lib/libelpa_openmp.so.3*
|
|
|
|
%files mpich-devel
|
|
%{_libdir}/mpich%{?_opt_cc_suffix}/lib/libelpa.so
|
|
%{_libdir}/mpich%{?_opt_cc_suffix}/lib/libelpa_openmp.so
|
|
%{_libdir}/mpich%{?_opt_cc_suffix}/lib/pkgconfig/elpa-%{version}.pc
|
|
%{_libdir}/mpich%{?_opt_cc_suffix}/lib/pkgconfig/elpa_openmp-%{version}.pc
|
|
%{_fmoddir}/mpich%{?_cc_name_suffix}/*.mod
|
|
|
|
# only non-mt openmpi build, see bug #1105902
|
|
%files openmpi
|
|
%{_libdir}/openmpi%{?_opt_cc_suffix}/bin/elpa2_print_kernels
|
|
%exclude %{_libdir}/openmpi%{?_opt_cc_suffix}/bin/elpa2_print_kernels_openmp
|
|
%{_libdir}/openmpi%{?_opt_cc_suffix}/lib/libelpa.so.3*
|
|
%exclude %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/libelpa_openmp.so.3*
|
|
|
|
%files openmpi-devel
|
|
%{_libdir}/openmpi%{?_opt_cc_suffix}/lib/libelpa.so
|
|
%exclude %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/libelpa_openmp.so
|
|
%{_libdir}/openmpi%{?_opt_cc_suffix}/lib/pkgconfig/elpa-%{version}.pc
|
|
%exclude %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/pkgconfig/elpa_openmp-%{version}.pc
|
|
%{_fmoddir}/openmpi%{?_cc_name_suffix}/*.mod
|
|
%exclude %{_fmoddir}/openmpi%{?_cc_name_suffix}/*_openmp.mod
|
|
|
|
%changelog
|
|
* Tue Aug 04 2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2015.02.002-6
|
|
- Use new execstack (#1247795)
|
|
|
|
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2015.02.002-5
|
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
|
|
|
* Mon May 04 2015 Dominik Mierzejewski <rpm@greysector.net> 2015.02.002-4
|
|
- fix build on EPEL7 (missing _pkgdocdir macro and BR: rsh for openmpi)
|
|
- move examples to -devel subpackage
|
|
- print whole testsuite log in case of test failure
|
|
- re-enable openmpi tests on i686 and armv7hl
|
|
|
|
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 2015.02.002-3
|
|
- Rebuilt for GCC 5 C++11 ABI change
|
|
|
|
* Mon Mar 23 2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2015.02.002-2
|
|
- Rebuild for fortran update (#1204420)
|
|
|
|
* Thu Mar 19 2015 Dominik Mierzejewski <rpm@greysector.net> 2015.02.002-1
|
|
- update to 2015.02.002 release (ABI change)
|
|
- drop libtool bug workaround
|
|
- make builds more verbose
|
|
- take advantage of upstream build system improvements
|
|
- ship C headers in -devel subpackage
|
|
|
|
* Mon Mar 16 2015 Thomas Spura <tomspur@fedoraproject.org> - 2013.11-6.008
|
|
- Rebuild for changed mpich libraries
|
|
|
|
* Tue Sep 16 2014 Dominik Mierzejewski <rpm@greysector.net> 2013.11-5.008
|
|
- fix release string broken by previous bump by releng script
|
|
- disable openmpi tests on armv7hl (bug #1144408)
|
|
|
|
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2013.11-4.9
|
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
|
|
|
* Thu Jul 3 2014 Peter Robinson <pbrobinson@fedoraproject.org> 2013.11-4.008
|
|
- aarch64/ppc64le don't have prelink
|
|
|
|
* Sun Jun 29 2014 Dominik Mierzejewski <rpm@greysector.net> 2013.11-3.008
|
|
- fix typo in execstack -c call
|
|
- link against atlas
|
|
|
|
* Thu Jun 26 2014 Dominik Mierzejewski <rpm@greysector.net> 2013.11-2.008
|
|
- remove executable stack from installed libraries
|
|
- fix undefined non-weak mpi symbols
|
|
- reorder build section and drop some redundant parts
|
|
- add missing gfortran Requires for -devel subpackages
|
|
- use correct URL and provide link to source tarball
|
|
|
|
* Tue Jun 24 2014 Dominik Mierzejewski <rpm@greysector.net> 2013.11-1.008
|
|
- initial build
|