Browse Source

initial package release

Signed-off-by: Toshaan Bharvani <toshaan@powerel.org>
master
Toshaan Bharvani 2 years ago
commit
4b4c69d627
  1. 64
      SOURCES/0001-TOOLS-INFO-Update-help-message-for-context-features.patch
  2. 372
      SPECS/ucx.spec

64
SOURCES/0001-TOOLS-INFO-Update-help-message-for-context-features.patch

@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
From caa228ab400b154634a7cbe48168e05cfae91881 Mon Sep 17 00:00:00 2001
From: Yossi Itigin <yosefe@mellanox.com>
Date: Wed, 30 Jun 2021 21:23:20 +0300
Subject: [PATCH] TOOLS/INFO: Update help message for context features

---
src/tools/info/ucx_info.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/tools/info/ucx_info.c b/src/tools/info/ucx_info.c
index 2354d4626..d5795d3e9 100644
--- a/src/tools/info/ucx_info.c
+++ b/src/tools/info/ucx_info.c
@@ -41,8 +41,8 @@ static void usage() {
printf(" 'r' : remote memory access\n");
printf(" 't' : tag matching \n");
printf(" 'm' : active messages \n");
- printf(" 'w' : wakeup\n");
printf(" Modifiers to use in combination with above features:\n");
+ printf(" 'w' : wakeup\n");
printf(" 'e' : error handling\n");
printf("\nOther settings:\n");
printf(" -t <name> Filter devices information using specified transport (requires -d)\n");
@@ -66,6 +66,9 @@ static void usage() {
int main(int argc, char **argv)
{
+ const uint64_t required_ucp_features = UCP_FEATURE_AMO32 |
+ UCP_FEATURE_AMO64 | UCP_FEATURE_RMA |
+ UCP_FEATURE_TAG | UCP_FEATURE_AM;
char *ip_addr = NULL;
ucs_config_print_flags_t print_flags;
ucp_ep_params_t ucp_ep_params;
@@ -153,12 +156,12 @@ int main(int argc, char **argv)
case 't':
ucp_features |= UCP_FEATURE_TAG;
break;
- case 'w':
- ucp_features |= UCP_FEATURE_WAKEUP;
- break;
case 'm':
ucp_features |= UCP_FEATURE_AM;
break;
+ case 'w':
+ ucp_features |= UCP_FEATURE_WAKEUP;
+ break;
case 'e':
ucp_ep_params.field_mask |= UCP_EP_PARAM_FIELD_ERR_HANDLING_MODE;
ucp_ep_params.err_mode = UCP_ERR_HANDLING_MODE_PEER;
@@ -242,8 +245,9 @@ int main(int argc, char **argv)
}
if (print_opts & (PRINT_UCP_CONTEXT|PRINT_UCP_WORKER|PRINT_UCP_EP|PRINT_MEM_MAP)) {
- if (ucp_features == 0) {
- printf("Please select UCP features using -u switch: a|r|t|m|w\n");
+ if (!(ucp_features & required_ucp_features)) {
+ printf("Please select at least one of 'a','r','t','m' UCP features "
+ "using -u switch.\n");
usage();
return -1;
}
--
2.31.1

372
SPECS/ucx.spec

@ -0,0 +1,372 @@ @@ -0,0 +1,372 @@
%{!?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
%bcond_with vfs

Name: ucx
Version: 1.11.2
Release: 2%{?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.11.2/ucx-1.11.2.tar.gz
Patch1: 0001-TOOLS-INFO-Update-help-message-for-context-features.patch

BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
Prefix: %{_prefix}

# UCX currently supports only the following architectures
ExclusiveArch: aarch64 ppc64le x86_64

%if %{defined extra_deps}
Requires: %{?extra_deps}
%endif

BuildRequires: automake autoconf libtool gcc-c++
%if "%{_vendor}" == "suse"
BuildRequires: libnuma-devel
%else
BuildRequires: numactl-devel
%endif
%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
%if %{with vfs}
BuildRequires: fuse3-devel
%endif

%description
UCX is an optimized communication framework for high-performance distributed
applications. UCX utilizes high-speed networks, such as RDMA (InfiniBand, RoCE,
etc), Cray Gemini or Aries, for inter-node communication. If no such network is
available, TCP is used instead. UCX supports efficient transfer of data in
either main memory (RAM) or GPU memory (through CUDA and ROCm libraries). In
addition, UCX provides efficient intra-node communication, by leveraging the
following shared memory mechanisms: posix, sysv, cma, knem, and xpmem.
The acronym UCX stands for "Unified Communication X".

This package was built from '' branch, commit ef2bbcf.

%if "%{_vendor}" == "suse"
%debug_package
%endif

%package devel
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: Header files required for developing with UCX

%description devel
Provides header files and examples for developing with UCX.

%prep
%setup -q
%patch1 -p1

%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 \
--without-java \
%_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 vfs fuse3 \
%_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.*
%{_bindir}/ucx_info
%{_bindir}/ucx_perftest
%{_bindir}/ucx_read_profile
%{_bindir}/io_demo
%{_datadir}/ucx
%exclude %{_datadir}/ucx/examples
%doc README AUTHORS NEWS
%{!?_licensedir:%global license %%doc}
%license LICENSE

%files devel
%{_includedir}/uc*
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/ucx.pc
%{_datadir}/ucx/examples

%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig

%if %{with cma}
%package cma
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX CMA support

%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

%if %{with vfs}
%package vfs
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX Virtual Filesystem support.

%description vfs
Provides a virtual filesystem over FUSE which allows real-time monitoring of UCX
library internals, protocol objects, transports status, and more.

%files vfs
%{_libdir}/ucx/libucs_fuse.so.*
%{_bindir}/ucx_vfs
%endif

%changelog
* Thu Nov 18 2021 Honggang Li <honli@redhat.com> - 1.11.2-2
- TOOLS/INFO: Update help message for context features
- Related: rhbz#1991185

* Mon Nov 01 2021 Honggang Li <honli@redhat.com> - 1.11.2-1
- Bump version to 1.11.2
- Related: rhbz#2015402

* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1.10.1-3
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688

* Mon Jul 12 2021 Honggang Li <honli@redhat.com> - 1.10.1-2
- Bump version to 1.10.1
- Related: rhbz#1858571

* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.9.0-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937

* Mon Nov 2 2020 Orion Poplawski <orion@nwra.com> - 1.9.0-1
- Update to 1.9.0

* Fri Oct 30 2020 Jeff Law <law@redhat.com> 1.8.1-5
- Adjust workaround for gcc-11 diagnostic to narrow its scope

* Thu Oct 29 2020 Jeff Law <law@redhat.com> 1.8.1-4
- Disable -Warray-bounds diagnostics for gcc-11

* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.8.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild

* Mon Jul 20 2020 Jeff Law <law@redhat.com> 1.8.1-2
- Fix broken configure files compromised by LTO

* Wed Jul 1 2020 Yossi Itigin <yosefe@mellanox.com> 1.8.1-1
- Bump version to 1.8.1
* Sun Sep 22 2019 Yossi Itigin <yosefe@mellanox.com> 1.8.0-1
- Bump version to 1.8.0
* Sun Mar 24 2019 Yossi Itigin <yosefe@mellanox.com> 1.7.0-1
- Bump version to 1.7.0
* Thu Jan 24 2019 Yossi Itigin <yosefe@mellanox.com> 1.6.0-1
- Add cma, knem, and xpmem sub-packages
* Tue Nov 20 2018 Yossi Itigin <yosefe@mellanox.com> 1.6.0-1
- Bump version to 1.6.0
* Tue Nov 6 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.5.0-1
- Bump version to 1.5.0
- See NEWS for details
* Tue Oct 30 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.4.0-1
- See NEWS for details
* Mon Aug 20 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.1-1
- See NEWS for details
* Thu Aug 16 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.0-1
- Explicitly set gcc-c++ as requirements
* Wed Mar 7 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.0-1
- See NEWS for details
* Mon Aug 21 2017 Andrey Maslennikov <andreyma@mellanox.com> 1.2.1-1
- Spec file now complies with Fedora guidelines
* Mon Jul 3 2017 Andrey Maslennikov <andreyma@mellanox.com> 1.2.0-1
- Fedora package created
Loading…
Cancel
Save