da93f9
%{!?configure_options: %global configure_options %{nil}}
da93f9
%bcond_without cma
da93f9
%bcond_with    cuda
da93f9
%bcond_with    gdrcopy
da93f9
%bcond_without ib
da93f9
%bcond_with    knem
da93f9
%bcond_without rdmacm
da93f9
%bcond_with    rocm
da93f9
%bcond_with    ugni
da93f9
%bcond_with    xpmem
da93f9
%bcond_with    vfs
da93f9
da93f9
Name: ucx
555854
Version: 1.13.1
555854
Release: 2%{?dist}
da93f9
Summary: UCX is a communication library implementing high-performance messaging
da93f9
da93f9
License: BSD
da93f9
URL: http://www.openucx.org
b72fa1
Source: https://github.com/openucx/%{name}/releases/download/v%{version}/ucx-%{version}.tar.gz
da93f9
da93f9
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
da93f9
Prefix: %{_prefix}
da93f9
da93f9
# UCX currently supports only the following architectures
da93f9
ExclusiveArch: aarch64 ppc64le x86_64
da93f9
da93f9
%if %{defined extra_deps}
da93f9
Requires: %{?extra_deps}
da93f9
%endif
da93f9
da93f9
BuildRequires: automake autoconf libtool gcc-c++
da93f9
%if "%{_vendor}" == "suse"
da93f9
BuildRequires: libnuma-devel
da93f9
%else
da93f9
BuildRequires: numactl-devel
da93f9
%endif
da93f9
%if %{with cma}
da93f9
BuildRequires: glibc-devel >= 2.15
da93f9
%endif
da93f9
%if %{with gdrcopy}
da93f9
BuildRequires: gdrcopy
da93f9
%endif
da93f9
%if %{with ib}
da93f9
BuildRequires: libibverbs-devel
da93f9
%endif
da93f9
%if %{with knem}
da93f9
BuildRequires: knem
da93f9
%endif
da93f9
%if %{with rdmacm}
da93f9
BuildRequires: librdmacm-devel
da93f9
%endif
da93f9
%if %{with rocm}
da93f9
BuildRequires: hsa-rocr-dev
da93f9
%endif
da93f9
%if %{with xpmem}
da93f9
BuildRequires: xpmem-devel
da93f9
%endif
da93f9
%if %{with vfs}
da93f9
BuildRequires: fuse3-devel
da93f9
%endif
da93f9
da93f9
%description
da93f9
UCX is an optimized communication framework for high-performance distributed
da93f9
applications. UCX utilizes high-speed networks, such as RDMA (InfiniBand, RoCE,
da93f9
etc), Cray Gemini or Aries, for inter-node communication. If no such network is
da93f9
available, TCP is used instead. UCX supports efficient transfer of data in
da93f9
either main memory (RAM) or GPU memory (through CUDA and ROCm libraries). In
da93f9
addition, UCX provides efficient intra-node communication, by leveraging the
da93f9
following shared memory mechanisms: posix, sysv, cma, knem, and xpmem.
da93f9
The acronym UCX stands for "Unified Communication X".
da93f9
da93f9
%if "%{_vendor}" == "suse"
da93f9
%debug_package
da93f9
%endif
da93f9
da93f9
%package devel
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: Header files required for developing with UCX
da93f9
da93f9
%description devel
da93f9
Provides header files and examples for developing with UCX.
da93f9
da93f9
%prep
da93f9
%setup -q
da93f9
da93f9
%build
da93f9
%define _with_arg()   %{expand:%%{?with_%{1}:--with-%{2}}%%{!?with_%{1}:--without-%{2}}}
da93f9
%define _enable_arg() %{expand:%%{?with_%{1}:--enable-%{2}}%%{!?with_%{1}:--disable-%{2}}}
da93f9
%configure --disable-optimizations \
da93f9
           --disable-logging \
da93f9
           --disable-debug \
da93f9
           --disable-assertions \
da93f9
           --disable-params-check \
da93f9
           --without-java \
da93f9
           %_enable_arg cma cma \
da93f9
           %_with_arg cuda cuda \
da93f9
           %_with_arg gdrcopy gdrcopy \
da93f9
           %_with_arg ib verbs \
da93f9
           %_with_arg knem knem \
da93f9
           %_with_arg rdmacm rdmacm \
da93f9
           %_with_arg rocm rocm \
da93f9
           %_with_arg xpmem xpmem \
da93f9
           %_with_arg vfs fuse3 \
da93f9
           %_with_arg ugni ugni \
da93f9
           %{?configure_options}
da93f9
make %{?_smp_mflags} V=1
da93f9
da93f9
%install
da93f9
make DESTDIR=%{buildroot} install
da93f9
rm -f %{buildroot}%{_libdir}/*.la
da93f9
rm -f %{buildroot}%{_libdir}/*.a
da93f9
rm -f %{buildroot}%{_libdir}/ucx/*.la
da93f9
rm -f %{buildroot}%{_libdir}/ucx/lib*.so
da93f9
rm -f %{buildroot}%{_libdir}/ucx/lib*.a
da93f9
da93f9
%files
da93f9
%{_libdir}/lib*.so.*
da93f9
%{_bindir}/ucx_info
da93f9
%{_bindir}/ucx_perftest
da93f9
%{_bindir}/ucx_read_profile
da93f9
%{_bindir}/io_demo
da93f9
%{_datadir}/ucx
da93f9
%exclude %{_datadir}/ucx/examples
da93f9
%doc README AUTHORS NEWS
da93f9
%{!?_licensedir:%global license %%doc}
da93f9
%license LICENSE
da93f9
da93f9
%files devel
da93f9
%{_includedir}/uc*
da93f9
%{_libdir}/lib*.so
b72fa1
%{_libdir}/pkgconfig/ucx*.pc
b72fa1
%{_libdir}/cmake/ucx/*.cmake
da93f9
%{_datadir}/ucx/examples
da93f9
da93f9
%post -p /sbin/ldconfig
da93f9
%postun -p /sbin/ldconfig
da93f9
da93f9
%if %{with cma}
da93f9
%package cma
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX CMA support
da93f9
da93f9
%description cma
da93f9
Provides CMA (Linux cross-memory-attach) transport for UCX. It utilizes the
da93f9
system calls process_vm_readv/writev() for one-shot memory copy from another
da93f9
process.
da93f9
da93f9
%files cma
da93f9
%{_libdir}/ucx/libuct_cma.so.*
da93f9
%endif
da93f9
da93f9
%if %{with cuda}
da93f9
%package cuda
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX CUDA support
da93f9
da93f9
%description cuda
da93f9
Provide CUDA (NVIDIA GPU) support for UCX. Enables passing GPU memory pointers
da93f9
to UCX communication routines, and transports taking advantage of GPU-Direct
da93f9
technology for direct data transfer between GPU and RDMA devices.
da93f9
da93f9
%files cuda
da93f9
%{_libdir}/ucx/libucx_perftest_cuda.so.*
da93f9
%{_libdir}/ucx/libucm_cuda.so.*
da93f9
%{_libdir}/ucx/libuct_cuda.so.*
da93f9
%endif
da93f9
da93f9
%if %{with gdrcopy}
da93f9
%package gdrcopy
da93f9
Requires: %{name}-cuda%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX GDRCopy support
da93f9
da93f9
%description gdrcopy
da93f9
Provide GDRCopy support for UCX. GDRCopy is a low-latency GPU memory copy
da93f9
library, built on top of the NVIDIA GPUDirect RDMA technology.
da93f9
da93f9
%files gdrcopy
da93f9
%{_libdir}/ucx/libuct_cuda_gdrcopy.so.*
da93f9
%endif
da93f9
da93f9
%if %{with ib}
da93f9
%package ib
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX RDMA support
da93f9
da93f9
%description ib
da93f9
Provides support for IBTA-compliant transports for UCX. This includes RoCE,
da93f9
InfiniBand, OmniPath, and any other transport supported by IB Verbs API.
da93f9
Typically these transports provide RDMA support, which enables a fast and
da93f9
hardware-offloaded data transfer.
da93f9
da93f9
%files ib
da93f9
%{_libdir}/ucx/libuct_ib.so.*
da93f9
%endif
da93f9
da93f9
%if %{with knem}
da93f9
%package knem
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX KNEM transport support
da93f9
da93f9
%description knem
da93f9
Provides KNEM (fast inter-process copy) transport for UCX. KNEM is a Linux
da93f9
kernel module that enables high-performance intra-node MPI communication
da93f9
for large messages.
da93f9
da93f9
%files knem
da93f9
%{_libdir}/ucx/libuct_knem.so.*
da93f9
%endif
da93f9
da93f9
%if %{with rdmacm}
da93f9
%package rdmacm
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX RDMA connection manager support
da93f9
da93f9
%description rdmacm
da93f9
Provides RDMA connection-manager support to UCX, which enables client/server
da93f9
based connection establishment for RDMA-capable transports.
da93f9
da93f9
%files rdmacm
da93f9
%{_libdir}/ucx/libuct_rdmacm.so.*
da93f9
%endif
da93f9
da93f9
%if %{with rocm}
da93f9
%package rocm
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX ROCm GPU support
da93f9
da93f9
%description rocm
da93f9
Provides Radeon Open Compute (ROCm) Runtime support for UCX.
da93f9
da93f9
%files rocm
da93f9
%{_libdir}/ucx/libuct_rocm.so.*
da93f9
%{_libdir}/ucx/libucm_rocm.so.*
da93f9
da93f9
%if %{with gdrcopy}
da93f9
%package rocmgdr
da93f9
Requires: %{name}-rocm%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX GDRCopy support for ROCM
da93f9
da93f9
%description rocmgdr
da93f9
Provide GDRCopy support for UCX ROCM. GDRCopy is a low-latency GPU memory copy
da93f9
library, built on top of the NVIDIA GPUDirect RDMA technology.
da93f9
da93f9
%files rocmgdr
da93f9
%{_libdir}/ucx/libuct_rocm_gdr.so.*
da93f9
%endif
da93f9
%endif
da93f9
da93f9
%if %{with ugni}
da93f9
%package ugni
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX Gemini/Aries transport support.
da93f9
da93f9
%description ugni
da93f9
Provides Gemini/Aries transport for UCX.
da93f9
da93f9
%files ugni
da93f9
%{_libdir}/ucx/libuct_ugni.so.*
da93f9
%endif
da93f9
da93f9
%if %{with xpmem}
da93f9
%package xpmem
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX XPMEM transport support.
da93f9
da93f9
%description xpmem
da93f9
Provides XPMEM transport for UCX. XPMEM is a Linux kernel module that enables a
da93f9
process to map the memory of another process into its virtual address space.
da93f9
da93f9
%files xpmem
da93f9
%{_libdir}/ucx/libuct_xpmem.so.*
da93f9
%endif
da93f9
da93f9
%if %{with vfs}
da93f9
%package vfs
da93f9
Requires: %{name}%{?_isa} = %{version}-%{release}
da93f9
Summary: UCX Virtual Filesystem support.
da93f9
da93f9
%description vfs
da93f9
Provides a virtual filesystem over FUSE which allows real-time monitoring of UCX
da93f9
library internals, protocol objects, transports status, and more.
da93f9
da93f9
%files vfs
da93f9
%{_libdir}/ucx/libucs_fuse.so.*
da93f9
%{_bindir}/ucx_vfs
da93f9
%endif
da93f9
da93f9
%changelog
555854
* Thu Feb 02 2023 Michal Schmidt <mschmidt@redhat.com> - 1.13.1-2
555854
- Update to upstream release 1.13.1
555854
- Resolves: rhbz#2166780
555854
b72fa1
* Wed Aug 03 2022 Michal Schmidt <mschmidt@redhat.com> - 1.13.0-1
b72fa1
- Update to upstream release 1.13.0
b72fa1
- Resolves: rhbz#2049557
b72fa1
da93f9
* Thu Nov 18 2021 Honggang Li <honli@redhat.com> - 1.11.2-2
da93f9
- TOOLS/INFO: Update help message for context features
da93f9
- Related: rhbz#1991185
da93f9
da93f9
* Mon Nov 01 2021 Honggang Li <honli@redhat.com> - 1.11.2-1
da93f9
- Bump version to 1.11.2
da93f9
- Related: rhbz#2015402
da93f9
da93f9
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1.10.1-3
da93f9
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
da93f9
  Related: rhbz#1991688
da93f9
da93f9
* Mon Jul 12 2021 Honggang Li <honli@redhat.com> - 1.10.1-2
da93f9
- Bump version to 1.10.1
da93f9
- Related: rhbz#1858571
da93f9
da93f9
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.9.0-2
da93f9
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
da93f9
da93f9
* Mon Nov  2 2020 Orion Poplawski <orion@nwra.com> - 1.9.0-1
da93f9
- Update to 1.9.0
da93f9
da93f9
* Fri Oct 30 2020 Jeff Law <law@redhat.com> 1.8.1-5
da93f9
- Adjust workaround for gcc-11 diagnostic to narrow its scope
da93f9
da93f9
* Thu Oct 29 2020 Jeff Law <law@redhat.com> 1.8.1-4
da93f9
- Disable -Warray-bounds diagnostics for gcc-11
da93f9
da93f9
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.8.1-3
da93f9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
da93f9
da93f9
* Mon Jul 20 2020 Jeff Law <law@redhat.com> 1.8.1-2
da93f9
- Fix broken configure files compromised by LTO
da93f9
da93f9
* Wed Jul 1 2020 Yossi Itigin <yosefe@mellanox.com> 1.8.1-1
da93f9
- Bump version to 1.8.1
da93f9
* Sun Sep 22 2019 Yossi Itigin <yosefe@mellanox.com> 1.8.0-1
da93f9
- Bump version to 1.8.0
da93f9
* Sun Mar 24 2019 Yossi Itigin <yosefe@mellanox.com> 1.7.0-1
da93f9
- Bump version to 1.7.0
da93f9
* Thu Jan 24 2019 Yossi Itigin <yosefe@mellanox.com> 1.6.0-1
da93f9
- Add cma, knem, and xpmem sub-packages
da93f9
* Tue Nov 20 2018 Yossi Itigin <yosefe@mellanox.com> 1.6.0-1
da93f9
- Bump version to 1.6.0
da93f9
* Tue Nov 6 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.5.0-1
da93f9
- Bump version to 1.5.0
da93f9
- See NEWS for details
da93f9
* Tue Oct 30 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.4.0-1
da93f9
- See NEWS for details
da93f9
* Mon Aug 20 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.1-1
da93f9
- See NEWS for details
da93f9
* Thu Aug 16 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.0-1
da93f9
- Explicitly set gcc-c++ as requirements
da93f9
* Wed Mar 7 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.0-1
da93f9
- See NEWS for details
da93f9
* Mon Aug 21 2017 Andrey Maslennikov <andreyma@mellanox.com> 1.2.1-1
da93f9
- Spec file now complies with Fedora guidelines
da93f9
* Mon Jul 3 2017 Andrey Maslennikov <andreyma@mellanox.com> 1.2.0-1
da93f9
- Fedora package created