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