Blame SPECS/ucx.spec

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
3ad3aa
%bcond_with    java
d8a9c6
d8a9c6
Name: ucx
3ad3aa
Version: 1.8.0
9bab27
Release: 1%{?dist}
d8a9c6
Summary: UCX is a communication library implementing high-performance messaging
3ad3aa
Group: System Environment/Libraries
d8a9c6
d8a9c6
License: BSD
d8a9c6
URL: http://www.openucx.org
3ad3aa
Source: https://github.com/openucx/%{name}/releases/download/v1.8.0/ucx-1.8.0.tar.gz
d8a9c6
d8a9c6
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
d8a9c6
d8a9c6
# UCX currently supports only the following architectures
d8a9c6
ExclusiveArch: aarch64 ppc64le x86_64
d8a9c6
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
3ad3aa
%if %{with java}
3ad3aa
BuildRequires: maven
3ad3aa
%endif
d8a9c6
d8a9c6
%description
9bab27
UCX stands for Unified Communication X. UCX provides an optimized communication
9bab27
layer for Message Passing (MPI), PGAS/OpenSHMEM libraries and RPC/data-centric
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
9bab27
either main memory (RAM) or GPU memory (through CUDA and ROCm libraries).
9bab27
In addition, UCX provides efficient intra-node communication, by leveraging the
9bab27
following shared memory mechanisms: posix, sysv, cma, knem, and xpmem.
3ad3aa
This package was built from '' branch, commit c30b7da.
3ad3aa
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
3ad3aa
Group: Development/Libraries
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 \
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 \
9bab27
           %_with_arg ugni ugni \
3ad3aa
           %_with_arg java java \
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.*
d8a9c6
%{_bindir}/uc*
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
d8a9c6
%{_libdir}/pkgconfig/ucx.pc
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
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
Group: System Environment/Libraries
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.
3ad3aa
Group: System Environment/Libraries
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.
3ad3aa
Group: System Environment/Libraries
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
3ad3aa
%if %{with java}
3ad3aa
%package java
3ad3aa
Requires: %{name}%{?_isa} = %{version}-%{release}
3ad3aa
Summary: UCX Java bindings
3ad3aa
Group: System Environment/Libraries
3ad3aa
3ad3aa
%description java
3ad3aa
Provides java bindings for UCX.
3ad3aa
3ad3aa
%files java
3ad3aa
%{_libdir}/jucx-*.jar
3ad3aa
%endif
9bab27
d8a9c6
%changelog
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