Blame SPECS/ucx.spec

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