diff --git a/.gitignore b/.gitignore index 3300296..4c72b8c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /ucx-1.4.0.tar.gz /ucx-1.5.1.tar.gz /ucx-1.5.2.tar.gz +/ucx-1.6.0.tar.gz diff --git a/sources b/sources index 3f91640..50b50e2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ucx-1.5.2.tar.gz) = 7fdfe2c057e6699c3c462a6486ec188a5d51666486a710409b661fb1b1aab28fd99173d9b61c341a3163e7d2e36deb1260faa732e66295cca2082c5c080eb24e +SHA512 (ucx-1.6.0.tar.gz) = 3d329cb968b12fdb2944ce9ed8d8225ddc748fe766e74a3da333b1f81a9fb83c17459fb7f1273b2a3963e91213c85af37eed17963222a9bd9194dfb98e5a7415 diff --git a/ucx.spec b/ucx.spec index af0f898..0b6b7c5 100644 --- a/ucx.spec +++ b/ucx.spec @@ -1,21 +1,58 @@ %{!?configure_options: %global configure_options %{nil}} +%bcond_without cma +%bcond_with cuda +%bcond_with gdrcopy +%bcond_without ib +%if 0%{?fedora} >= 30 || 0%{?rhel} >= 7 +%bcond_with ib_cm +%else +%bcond_without ib_cm +%endif +%bcond_with knem +%bcond_without rdmacm +%bcond_with rocm +%bcond_with ugni +%bcond_with xpmem Name: ucx -Version: 1.5.2 -Release: 2%{?dist} +Version: 1.6.0 +Release: 1%{?dist} Summary: UCX is a communication library implementing high-performance messaging License: BSD URL: http://www.openucx.org -Source: https://github.com/openucx/%{name}/releases/download/v1.5.2/ucx-1.5.2.tar.gz +Source: https://github.com/openucx/%{name}/releases/download/v1.6.0/ucx-1.6.0.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) # UCX currently supports only the following architectures ExclusiveArch: aarch64 ppc64le x86_64 -BuildRequires: numactl-devel libibverbs-devel -BuildRequires: automake autoconf libtool gcc-c++ +BuildRequires: automake autoconf libtool gcc-c++ numactl-devel +%if %{with cma} +BuildRequires: glibc-devel >= 2.15 +%endif +%if %{with gdrcopy} +BuildRequires: gdrcopy +%endif +%if %{with ib} +BuildRequires: libibverbs-devel +%endif +%if %{with ib_cm} +BuildRequires: libibcm-devel +%endif +%if %{with knem} +BuildRequires: knem +%endif +%if %{with rdmacm} +BuildRequires: librdmacm-devel +%endif +%if %{with rocm} +BuildRequires: hsa-rocr-dev +%endif +%if %{with xpmem} +BuildRequires: xpmem-devel +%endif %description UCX stands for Unified Communication X. UCX provides an optimized communication @@ -29,33 +66,42 @@ following shared memory mechanisms: posix, sysv, cma, knem, and xpmem. %package devel Requires: %{name}%{?_isa} = %{version}-%{release} -Summary: Header files required to develop with UCX - -%package static -Requires: %{name}-devel = %{version}-%{release} -Summary: Static libraries required to develop with UCX +Summary: Header files required for developing with UCX %description devel Provides header files and examples for developing with UCX. -%description static -Provides static libraries required for development with UCX. - %prep %setup -q %build +%define _with_arg() %{expand:%%{?with_%{1}:--with-%{2}}%%{!?with_%{1}:--without-%{2}}} +%define _enable_arg() %{expand:%%{?with_%{1}:--enable-%{2}}%%{!?with_%{1}:--disable-%{2}}} %configure --disable-optimizations \ --disable-logging \ --disable-debug \ --disable-assertions \ --disable-params-check \ + %_enable_arg cma cma \ + %_with_arg cuda cuda \ + %_with_arg gdrcopy gdrcopy \ + %_with_arg ib verbs \ + %_with_arg ib_cm cm \ + %_with_arg knem knem \ + %_with_arg rdmacm rdmacm \ + %_with_arg rocm rocm \ + %_with_arg xpmem xpmem \ + %_with_arg ugni ugni \ %{?configure_options} make %{?_smp_mflags} V=1 %install make DESTDIR=%{buildroot} install rm -f %{buildroot}%{_libdir}/*.la +rm -f %{buildroot}%{_libdir}/*.a +rm -f %{buildroot}%{_libdir}/ucx/*.la +rm -f %{buildroot}%{_libdir}/ucx/lib*.so +rm -f %{buildroot}%{_libdir}/ucx/lib*.a %files %{_libdir}/lib*.so.* @@ -72,22 +118,163 @@ rm -f %{buildroot}%{_libdir}/*.la %{_libdir}/pkgconfig/ucx.pc %{_datadir}/ucx/examples -%files static -%{_libdir}/lib*.a - %post -p /sbin/ldconfig %postun -p /sbin/ldconfig -%changelog -* Sat Jul 27 2019 Fedora Release Engineering - 1.5.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild +%if %{with cma} +%package cma +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX CMA support -* Tue Jun 04 2019 Yossi Itigin 1.5.2-1 -- Bump version to 1.5.2 -- See NEWS for details -* Sat Mar 23 2019 Yossi Itigin 1.5.1-1 -- Bump version to 1.5.1 -- See NEWS for details +%description cma +Provides CMA (Linux cross-memory-attach) transport for UCX. It utilizes the +system calls process_vm_readv/writev() for one-shot memory copy from another +process. + +%files cma +%{_libdir}/ucx/libuct_cma.so.* +%endif + +%if %{with cuda} +%package cuda +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX CUDA support + +%description cuda +Provide CUDA (NVIDIA GPU) support for UCX. Enables passing GPU memory pointers +to UCX communication routines, and transports taking advantage of GPU-Direct +technology for direct data transfer between GPU and RDMA devices. + +%files cuda +%{_libdir}/ucx/libucx_perftest_cuda.so.* +%{_libdir}/ucx/libucm_cuda.so.* +%{_libdir}/ucx/libuct_cuda.so.* +%endif + +%if %{with gdrcopy} +%package gdrcopy +Requires: %{name}-cuda%{?_isa} = %{version}-%{release} +Summary: UCX GDRCopy support + +%description gdrcopy +Provide GDRCopy support for UCX. GDRCopy is a low-latency GPU memory copy +library, built on top of the NVIDIA GPUDirect RDMA technology. + +%files gdrcopy +%{_libdir}/ucx/libuct_cuda_gdrcopy.so.* +%endif + +%if %{with ib} +%package ib +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX RDMA support + +%description ib +Provides support for IBTA-compliant transports for UCX. This includes RoCE, +InfiniBand, OmniPath, and any other transport supported by IB Verbs API. +Typically these transports provide RDMA support, which enables a fast and +hardware-offloaded data transfer. + +%files ib +%{_libdir}/ucx/libuct_ib.so.* +%endif + +%if %{with ib_cm} +%package ib-cm +Requires: %{name}-ib%{?_isa} = %{version}-%{release} +Summary: UCX InfiniBand connection-manager support + +%description ib-cm +Provides Infiniband Connection Manager (also known as ibcm) support for UCX. + +%files ib-cm +%{_libdir}/ucx/libuct_ib_cm.so.* +%endif + +%if %{with knem} +%package knem +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX KNEM transport support + +%description knem +Provides KNEM (fast inter-process copy) transport for UCX. KNEM is a Linux +kernel module that enables high-performance intra-node MPI communication +for large messages. + +%files knem +%{_libdir}/ucx/libuct_knem.so.* +%endif + +%if %{with rdmacm} +%package rdmacm +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX RDMA connection manager support + +%description rdmacm +Provides RDMA connection-manager support to UCX, which enables client/server +based connection establishment for RDMA-capable transports. + +%files rdmacm +%{_libdir}/ucx/libuct_rdmacm.so.* +%endif + +%if %{with rocm} +%package rocm +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX ROCm GPU support + +%description rocm +Provides Radeon Open Compute (ROCm) Runtime support for UCX. + +%files rocm +%{_libdir}/ucx/libuct_rocm.so.* +%{_libdir}/ucx/libucm_rocm.so.* + +%if %{with gdrcopy} +%package rocmgdr +Requires: %{name}-rocm%{?_isa} = %{version}-%{release} +Summary: UCX GDRCopy support for ROCM + +%description rocmgdr +Provide GDRCopy support for UCX ROCM. GDRCopy is a low-latency GPU memory copy +library, built on top of the NVIDIA GPUDirect RDMA technology. + +%files rocmgdr +%{_libdir}/ucx/libuct_rocm_gdr.so.* +%endif +%endif + +%if %{with ugni} +%package ugni +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX Gemini/Aries transport support. + +%description ugni +Provides Gemini/Aries transport for UCX. + +%files ugni +%{_libdir}/ucx/libuct_ugni.so.* +%endif + +%if %{with xpmem} +%package xpmem +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX XPMEM transport support. + +%description xpmem +Provides XPMEM transport for UCX. XPMEM is a Linux kernel module that enables a +process to map the memory of another process into its virtual address space. + +%files xpmem +%{_libdir}/ucx/libuct_xpmem.so.* +%endif + + +%changelog +* Thu Jan 24 2019 Yossi Itigin 1.6.0-1 +- Add cma, knem, and xpmem sub-packages +* Tue Nov 20 2018 Yossi Itigin 1.6.0-1 +- Bump version to 1.6.0 * Tue Nov 6 2018 Andrey Maslennikov 1.5.0-1 - Bump version to 1.5.0 - See NEWS for details