SHA256
1
0
forked from pool/openucx
openucx/openucx.spec
Jan Engelhardt 9033dd246f Accepting request 811684 from home:NMoreyChaisemartin:branches:science:HPC
- Update to v1.8.0
  - Features:
    - Improved detection for DEVX support
    - Improved TCP scalability
    - Added support for ROCM to perftest
    - Added support for different source and target memory types to perftest
    - Added optimized memcpy for ROCM devices
    - Added hardware tag-matching for CUDA buffers
    - Added support for CUDA and ROCM managed memories
    - Added support for client/server disconnect protocol over rdma connection manager
    - Added support for striding receive queue for hardware tag-matching
    - Added XPMEM-based rendezvous protocol for shared memory
    - Added support shared memory communication between containers on same machine
    - Added support for multi-threaded RDMA memory registration for large regions
    - Added new test cases to Azure CI
    - Added support for multiple listening transports
    - Added UCT socket-based connection manager transport
    - Updated API for UCT component management
    - Added API to retrieve the listening port
    - Added UCP active message API
    - Removed deprecated API for querying UCT memory domains
    - Refactored server/client examples
    - Added support for dlopen interception in UCM
    - Added support for PCIe atomics
    - Updated Java API: added support for most of UCP layer operations
    - Updated support for Mellanox DevX API
    - Added multiple UCT/TCP transport performance optimizations
    - Optimized memcpy() for Intel platforms
    - Added protection from non-UCX socket based app connections
    - Improved search time for PKEY object
    - Enabled gtest over IPv6 interfaces
    - Updated Mellanox and Bull device IDs
    - Added support for CUDA_VISIBLE_DEVICES
    - Increased limits for CUDA IPC registration
  - Bugfixes:
    - Multiple fixes in JUCX
    - Fixes in UCP thread safety
    - Fixes for most recent versions GCC, PGI, and ICC
    - Fixes for CPU affinity on Azure instances
    - Fixes in XPMEM support on PPC64
    - Performance fixes in CUDA IPC
    - Fixes in RDMA CM flows
    - Multiple fixes in TCP transport
    - Multiple fixes in documentation
    - Fixes in transport lane selection logic
    - Fixes in Java jar build
    - Fixes in socket connection manager for Nvidia DGX-2 platform
    - Multiple fixes in UCP, UCT, UCM libraries
    - Multiple fixes for BSD and Mac OS systems
    - Fixes for Clang compiler
    - Fix CPU optimization configuration options
    - Fix JUCX build on GPU nodes
    - Fix in Azure release pipeline flow
    - Fix in CUDA memory hooks management
    - Fix in GPU memory peer direct gtest
    - Fix in TCP connection establishment flow
    - Fix in GPU IPC check
    - Fix in CUDA Jenkins test flow
    - Multiple fixes in CUDA IPC flow
    - Fix adding missing header files
    - Fix to prevent failures in presence of VPN enabled Ethernet interfaces
- Refresh openucx-s390x-support.patch against new version

OBS-URL: https://build.opensuse.org/request/show/811684
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openucx?expand=0&rev=37
2020-06-05 08:02:58 +00:00

232 lines
6.8 KiB
RPMSpec

#
# spec file for package openucx
#
# Copyright (c) 2020 SUSE LLC
#
# 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.8.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 stands for Unified Communication X. UCX provides an optimized communication
layer for Message Passing (MPI), PGAS/OpenSHMEM libraries and RPC/data-centric
applications. UCX utilizes high-speed networks, such as RDMA (InfiniBand, RoCE,
etc), Cray Gemini or Aries, for inter-node communication. If no such network is
available, TCP is used instead. UCX supports efficient transfer of data in
either main memory (RAM) or GPU memory (through CUDA and ROCm libraries).
In addition, UCX provides efficient intra-node communication, by leveraging the
following shared memory mechanisms: posix, sysv, cma, knem, and xpmem.
%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" \
--disable-debug --disable-assertions \
--disable-params-check \
--with-rc --with-ud --with-dc \
--with-mlx5-dv --with-rdmacm
# Override BASE_CFLAGS to disable Werror (boo#1121267)
make %{?_smp_mflags} V=1 BASE_CFLAGS="-g -Wall"
%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
rm -fv "%buildroot/%_libdir"/ucx/*.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.*
%dir %_libdir/ucx/
%_libdir/ucx/libuct_*.so.*
%files -n libuct-devel
%defattr(-,root,root)
%_includedir/uct/
%_libdir/libuct.so
%dir %_libdir/ucx/
%_libdir/ucx/libuct_*.so
%changelog