Blob Blame History Raw
Name:           legion
Version:        17.10.0
Release:        1%{?dist}
Summary:        A data-centric parallel programming system
License:        ASL 2.0
Url:            http://legion.stanford.edu/
Source0:        https://github.com/StanfordLegion/legion/archive/%{name}-%{version}.tar.gz#/%{name}-%{version}.tar.gz

BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  hwloc-devel
BuildRequires:  gasnet-devel
%if 0%{?rhel}
BuildRequires:  cmake3 >= 3.1
%else
BuildRequires:  cmake >= 3.1
%global cmake3 %{cmake}
%endif

%description
Legion is a data-centric parallel programming system for writing portable
high performance programs targeted at distributed heterogeneous architectures.
Legion presents abstractions which allow programmers to describe properties of
program data (e.g. independence, locality). By making the Legion programming
system aware of the structure of program data, it can automate many of the
tedious tasks programmers currently face, including correctly extracting task-
and data-level parallelism and moving data around complex memory hierarchies.
A novel mapping interface provides explicit programmer controlled placement of
data in the memory hierarchy and assignment of tasks to processors in a way that
is orthogonal to correctness, thereby enabling easy porting and tuning of Legion
applications to new architectures.

%package openmpi
Summary:        Legion Open MPI binaries and libraries
Requires:       %{name}%{?_isa} = %{version}-%{release}
Requires:       openmpi
BuildRequires:  openmpi-devel

%description openmpi
Legion is a data-centric parallel programming system for writing portable
high performance programs targeted at distributed heterogeneous architectures.
Legion presents abstractions which allow programmers to describe properties of
program data (e.g. independence, locality). By making the Legion programming
system aware of the structure of program data, it can automate many of the
tedious tasks programmers currently face, including correctly extracting task-
and data-level parallelism and moving data around complex memory hierarchies.
A novel mapping interface provides explicit programmer controlled placement of
data in the memory hierarchy and assignment of tasks to processors in a way that
is orthogonal to correctness, thereby enabling easy porting and tuning of Legion
applications to new architectures.

Legion compiled with Open MPI, package incl. binaries and libraries

%package mpich
Summary:        Legion MPICH binaries and libraries
Requires:       %{name}%{?_isa} = %{version}-%{release}
Requires:       mpich
BuildRequires:  mpich-devel

%description mpich
Legion is a data-centric parallel programming system for writing portable
high performance programs targeted at distributed heterogeneous architectures.
Legion presents abstractions which allow programmers to describe properties of
program data (e.g. independence, locality). By making the Legion programming
system aware of the structure of program data, it can automate many of the
tedious tasks programmers currently face, including correctly extracting task-
and data-level parallelism and moving data around complex memory hierarchies.
A novel mapping interface provides explicit programmer controlled placement of
data in the memory hierarchy and assignment of tasks to processors in a way that
is orthogonal to correctness, thereby enabling easy porting and tuning of Legion
applications to new architectures.

Legion compiled with MPICH, package incl. binaries and libraries

%package devel
Summary:        Development headers and libraries for %{name} library
Requires:       %{name}%{?_isa} = %{version}-%{release}
Requires:       %{name}-openmpi%{?_isa} = %{version}
Requires:       %{name}-mpich%{?_isa} = %{version}
Requires:       mpich-devel
Requires:       openmpi-devel

%description devel
Legion is a data-centric parallel programming system for writing portable
high performance programs targeted at distributed heterogeneous architectures.
Legion presents abstractions which allow programmers to describe properties of
program data (e.g. independence, locality). By making the Legion programming
system aware of the structure of program data, it can automate many of the
tedious tasks programmers currently face, including correctly extracting task-
and data-level parallelism and moving data around complex memory hierarchies.
A novel mapping interface provides explicit programmer controlled placement of
data in the memory hierarchy and assignment of tasks to processors in a way that
is orthogonal to correctness, thereby enabling easy porting and tuning of Legion
applications to new architectures.

This package contains development headers and libraries for the legion library

%prep
%setup -q -n %{name}-%{name}-%{version}

%build
mkdir serial openmpi mpich

pushd serial
export LDFLAGS="%{__global_ldflags} -Wl,--as-needed"
%{cmake3} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=OFF -DLegion_BUILD_EXAMPLES=ON \
  -DLegion_BUILD_TESTS=ON -DLegion_BUILD_TUTORIAL=ON -DLegion_ENABLE_TESTING=ON
%make_build
popd

pushd openmpi
%{_openmpi_load}
export LDFLAGS="%{__global_ldflags} -Wl,--as-needed"
%{cmake3} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=ON -DLegion_BUILD_EXAMPLES=ON \
  -DCMAKE_INSTALL_LIBDIR=${MPI_LIB} -DCMAKE_INSTALL_INCLUDEDIR=${MPI_INCLUDE} -DGASNet_CONDUIT=mpi \
  -DLegion_BUILD_TESTS=ON -DLegion_BUILD_TUTORIAL=ON -DLegion_ENABLE_TESTING=ON
%make_build
%{_openmpi_unload}
popd

pushd mpich
%{_mpich_load}
export LDFLAGS="%{__global_ldflags} -Wl,--as-needed"
%{cmake3} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=ON -DLegion_BUILD_EXAMPLES=ON \
  -DCMAKE_INSTALL_LIBDIR=${MPI_LIB} -DCMAKE_INSTALL_INCLUDEDIR=${MPI_INCLUDE} -DGASNet_CONDUIT=mpi \
  -DLegion_BUILD_TESTS=ON -DLegion_BUILD_TUTORIAL=ON -DLegion_ENABLE_TESTING=ON
%make_build
%{_mpich_unload}
popd

%install
%make_install -C serial
%{_openmpi_load}
%make_install -C openmpi
%{_openmpi_unload}
%{_mpich_load}
%make_install -C mpich
%{_mpich_unload}

%check
%if 0%{?rhel}
#currently MPI on rhel does not support MPI_THREAD_MULTIPLE
%global testargs ARGS='-E mpi_interop'
%endif

make -C serial test CTEST_OUTPUT_ON_FAILURE=1 %{?testargs:%{testargs}}
%{_openmpi_load}
make -C openmpi test CTEST_OUTPUT_ON_FAILURE=1 %{?testargs:%{testargs}}
%{_openmpi_unload}
%{_mpich_load}
make -C mpich test CTEST_OUTPUT_ON_FAILURE=1 %{?testargs:%{testargs}}
%{_mpich_unload}

#move cmake files in a place where cmake can find them
mkdir -p %{buildroot}%{_libdir}/cmake
mv %{buildroot}{%{_datadir}/Legion,%{_libdir}/cmake/%{name}}

# MPI subpackages don't need the ldconfig magic.  They are hidden by
# default, in MPI back-end-specific directory, and only show to the
# user after the relevant environment module has been loaded.
# rpmlint will report that as errors, but it is fine.
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig

%files
%doc README.md CHANGES.txt
%license LICENSE.txt
%{_libdir}/lib*.so.1

%files devel
%{_includedir}/*
%{_libdir}/lib*.so
%{_libdir}/cmake/%{name}
%{_libdir}/openmpi*/lib/lib*.so
%{_libdir}/mpich*/lib/lib*.so

%files openmpi
%{_libdir}/openmpi*/lib/lib*.so.1

%files mpich
%{_libdir}/mpich*/lib/lib*.so.1

%changelog
* Sat Oct 28 2017 Christoph Junghans <junghans@votca.org> - 17.10.0-1
- Version bump to 17.10.0

* Tue Oct 03 2017 Christoph Junghans <junghans@votca.org> - 17.08.0-3
- Rebuilt for gasnet-1.30.0 for fc27

* Fri Sep 01 2017 Christoph Junghans <junghans@votca.org> - 17.08.0-2
- Rebuilt for gasnet-1.30.0

* Fri Aug 25 2017 Christoph Junghans <junghans@votca.org> - 17.08.0-1
- Update to 17.08.0 (#1485085)
- Re-enable tests on ppc and some on epel7

* Fri Aug 04 2017 Christoph Junghans <junghans@votca.org> - 17.05.0-4
- Added patch for s390x (bug #1477749), enable gasnet of s390x

* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 17.05.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild

* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 17.05.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Fri May 26 2017 Christoph Junghans <junghans@votca.org> - 17.05.0-1
- Version bump to 17.05.0 (bug #1456066)
- Drop 229.patch and 232.patch - merged upstream

* Tue Mar 28 2017 Christoph Junghans <junghans@votca.org> - 17.02.0-5
- Rebuilt for gasnet-1.28.2

* Mon Mar 20 2017 Christoph Junghans <junghans@votca.org> - 17.02.0-4
- Final changes from review (bug #1382755)

* Sun Mar 19 2017 Christoph Junghans <junghans@votca.org> - 17.02.0-3
- Added 232.patch to fix segfault for test on 1 thread systems
- Disable some broken tests on ppc64

* Mon Mar 13 2017 Christoph Junghans <junghans@votca.org> - 17.02.0-2
- Added 229.patch to support "make check" in cmake
- Minor changes from review (bug #1382755)

* Fri Feb 24 2017 Christoph Junghans <junghans@votca.org> - 17.02.0-1
- initial import