From 151c0bd8ba3979f79c5e63e5359d185a127db106 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 9 Dec 2016 13:20:45 -0700 Subject: legion: added mpi subpackages --- legion/legion.spec | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 4 deletions(-) diff --git a/legion/legion.spec b/legion/legion.spec index 0d9bbcc..58148ba 100644 --- a/legion/legion.spec +++ b/legion/legion.spec @@ -27,9 +27,53 @@ 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} +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} +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 @@ -51,15 +95,41 @@ This package contains development headers and libraries for the legion library %patch0 -p1 %build -mkdir %{_target_platform} -pushd %{_target_platform} +mkdir serial openmpi mpich + +pushd serial export LDFLAGS="%{__global_ldflags} -Wl,--as-needed" -%{cmake} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=ON -DLegion_BUILD_EXAMPLES=ON +%{cmake} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=OFF -DLegion_BUILD_EXAMPLES=ON %make_build +popd + +pushd openmpi +%{_openmpi_load} +export LDFLAGS="%{__global_ldflags} -Wl,--as-needed" +%{cmake} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=ON -DLegion_BUILD_EXAMPLES=ON -DCMAKE_INSTALL_LIBDIR=${MPI_LIB} -DGASNet_CONDUIT=mpi \ + -DGASNet_mpi-par_LIBRARY=${MPI_LIB}/libgasnet-mpi-par.so -DGASNet_gasnet_tools-par_LIBRARY=$MPI_LIB/libgasnet_tools-par.so -DGASNet_INCLUDE_DIR=$MPI_INCLUDE +%make_build +%{_openmpi_unload} +popd + +pushd mpich +%{_mpich_load} +export LDFLAGS="%{__global_ldflags} -Wl,--as-needed" +%{cmake} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=ON -DLegion_BUILD_EXAMPLES=ON -DCMAKE_INSTALL_LIBDIR=${MPI_LIB} -DGASNet_CONDUIT=mpi \ + -DGASNet_mpi-par_LIBRARY=${MPI_LIB}/libgasnet-mpi-par.so -DGASNet_gasnet_tools-par_LIBRARY=$MPI_LIB/libgasnet_tools-par.so -DGASNet_INCLUDE_DIR=$MPI_INCLUDE +%make_build +%{_mpich_unload} +popd %install -%make_install -C %{_target_platform} +%make_install -C serial +%make_install -C openmpi +%make_install -C mpich +# 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 @@ -75,8 +145,16 @@ export LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %{_includedir}/mappers %{_includedir}/realm %{_libdir}/lib*.so +%{_libdir}/openmpi*/lib/lib*.so +%{_libdir}/mpich*/lib/lib*.so %{_datadir}/Legion +%files openmpi +%{_libdir}/openmpi*/lib/lib*.so.1 + +%files mpich +%{_libdir}/mpich*/lib/lib*.so.1 + %changelog * Fri Oct 07 2016 Christoph Junghans - 16.10.0-1 - initial import -- cgit