openucx/openucx.spec
Nicolas Morey-Chaisemartin fd1e5380fe Accepting request 678966 from home:NMoreyChaisemartin:branches:science:HPC
- Update openucx-s390x-support.patch to fix support of 1.5.0 on s390x
- Add baselibs.conf for ppc

- Update to v1.5.0 (bsc#1121267)
  * Features:
  * New emulation mode enabling full UCX functionality (Atomic, Put, Get)
  * over TCP and RDMA-CORE interconnects which don't implement full RDMA semantics
  * Non-blocking API for all one-sided operations. All blocking communication APIs marked
  * as deprecated
  * New client/server connection establishment API, which allows connected handover between workers
  * Support for rdma-core direct-verbs (DEVX) and DC with mlx5 transports
  * GPU - Support for stream API and receive side pipelining
  * Malloc hooks using binary instrumentation instead of symbol override
  * Statistics for UCT tag API
  * GPU-to-Infiniband HCA affinity support based on locality/distance (PCIe)
  * Bugfixes:
  * Fix overflow in RC/DC flush operations
  * Update description in SPEC file and README
  * Fix RoCE source port for dc_mlx5 flow control
  * Improve ucx_info help message
  * Fix segfault in UCP, due to int truncation in count_one_bits()
  * Multiple other bugfixes (full list on github)
  * Tested configurations:
  * InfiniBand: MLNX_OFED 4.4-4.5, distribution inbox drivers, rdma-core
  * CUDA: gdrcopy 1.2, cuda 9.1.85
  * XPMEM: 2.6.2
  * KNEM: 1.1.2

OBS-URL: https://build.opensuse.org/request/show/678966
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openucx?expand=0&rev=27
2019-02-25 16:53:29 +00:00

216 lines
6.0 KiB
RPMSpec

#
# spec file for package openucx
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: openucx
Summary: Unifieid Communication X
License: BSD-3-Clause
Group: Development/Libraries/C and C++
Version: 1.5.0
Release: 0
Url: http://openucx.org/
#Git-Clone: git://github.com/openucx/ucx
#Git-Web: https://github.com/openucx/ucx
Source: https://github.com/openucx/ucx/releases/download/v%version/ucx-%version.tar.gz
Source1: baselibs.conf
Patch1: openucx-s390x-support.patch
BuildRequires: autoconf >= 2.63
BuildRequires: automake >= 1.10
BuildRequires: binutils-devel
BuildRequires: gcc-c++
BuildRequires: libibverbs-devel
%if 0%{?suse_version} < 1330
%ifnarch s390x
BuildRequires: libnuma-devel
%endif
%else
BuildRequires: libnuma-devel
%endif
BuildRequires: libtool
BuildRequires: pkg-config
BuildRequires: zlib-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: aarch64 %power64 x86_64 s390x
%description
UCX is a communication library implementing high-performance
messaging for MPI/PGAS frameworks.
%package tools
Summary: OpenUCX utilities
Group: System/Console
%description tools
Miscallaneous utilities for Unified Communication X.
%package -n libucm0
Summary: Memory (un)happing hooks for Unified Communication X
Group: System/Libraries
%description -n libucm0
libucm is a standalone non-unloadable library which installs hooks
for virtual memory changes in the current process. Then, it calls
user-defined callbacks, which may potentially override the default
behavior, or just passively listen and update their own data. libucm
does not use libuct, to avoid making it non-unloadable as well, and
impelements a basic logging service which is safe to use from malloc
hooks.
%package -n libucm-devel
Summary: Development files for Unified Communication X Memory Hooks
Group: Development/Libraries/C and C++
Requires: libucm0 = %version
%description -n libucm-devel
libucm is a standalone non-unloadable library which installs hooks
for virtual memory changes in the current process.
%package -n libucp0
Summary: Infiniband Unified Communication Protocols
Group: System/Libraries
%description -n libucp0
High-level API uses UCT framework to construct protocols commonly
found in applications (MPI, OpenSHMEM, PGAS, etc.)
%package -n libucp-devel
Summary: Development files for Unified Communication Protocols (UC-P)
Group: Development/Libraries/C and C++
Requires: libucp0 = %version
%description -n libucp-devel
High-level API uses UCT framework to construct protocols commonly
found in applications (MPI, OpenSHMEM, PGAS, etc.)
%package -n libucs0
Summary: Infiniband Unicified Communication Services
Group: System/Libraries
%description -n libucs0
This framework provides basic infrastructure for component based
programming, memory management, and useful system utilities.
%package -n libucs-devel
Summary: Development files for Unified Communication Services (UC-S)
Group: Development/Libraries/C and C++
Requires: libucs0 = %version
%description -n libucs-devel
This framework provides basic infrastructure for component based
programming, memory management, and useful system utilities.
%package -n libuct0
Summary: Infiniband Unified Communication Transport
Group: System/Libraries
%description -n libuct0
Low-level API that expose basic network operations supported by
underlying hardware.
%package -n libuct-devel
Summary: Development files for Unified Communication Transport (UC-T)
Group: Development/Libraries/C and C++
Requires: libuct0 = %version
%description -n libuct-devel
Low-level API that expose basic network operations supported by
underlying hardware.
%prep
%setup -qn ucx-%version
%patch1
%build
autoreconf -fi
export UCX_CFLAGS="%optflags -Wno-error"
%ifarch x86_64
export UCX_CFLAGS="$UCX_CFLAGS -mno-avx"
%endif
%ifarch %ix86
export UCX_CFLAGS="$UCX_CFLAGS -mno-sse -mno-sse2"
%endif
%configure --disable-static --without-avx \
%if 0%{?suse_version} < 1330
%ifarch s390x
--disable-numa \
%endif
%endif
--docdir="%_docdir/%name"
make %{?_smp_mflags} V=1
%post -n libucp0 -p /sbin/ldconfig
%postun -n libucp0 -p /sbin/ldconfig
%post -n libucs0 -p /sbin/ldconfig
%postun -n libucs0 -p /sbin/ldconfig
%post -n libuct0 -p /sbin/ldconfig
%postun -n libuct0 -p /sbin/ldconfig
%post -n libucm0 -p /sbin/ldconfig
%postun -n libucm0 -p /sbin/ldconfig
%install
%make_install
rm -fv "%buildroot/%_libdir"/*.la
# Rename example dir for consistency with the package name
mv %buildroot/%_datadir/ucx %buildroot/%_datadir/openucx
%files tools
%defattr(-,root,root)
%_bindir/ucx_*
%_datadir/%{name}/
%_libdir/pkgconfig/ucx.pc
%doc LICENSE NEWS
%files -n libucm0
%defattr(-,root,root)
%_libdir/libucm.so.*
%files -n libucm-devel
%defattr(-,root,root)
%_includedir/ucm/
%_libdir/libucm.so
%files -n libucp0
%defattr(-,root,root)
%_libdir/libucp.so.*
%files -n libucp-devel
%defattr(-,root,root)
%_includedir/ucp/
%_libdir/libucp.so
%files -n libucs0
%defattr(-,root,root)
%_libdir/libucs.so.*
%files -n libucs-devel
%defattr(-,root,root)
%_includedir/ucs/
%_libdir/libucs.so
%files -n libuct0
%defattr(-,root,root)
%_libdir/libuct.so.*
%files -n libuct-devel
%defattr(-,root,root)
%_includedir/uct/
%_libdir/libuct.so
%changelog