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