From fef012bc26bdb2aea345989d6ddce0f3a461067f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 17 May 2022 06:27:27 -0400 Subject: [PATCH] import ucx-1.11.2-2.el9 --- .gitignore | 1 + .ucx.metadata | 1 + ...te-help-message-for-context-features.patch | 64 +++ SPECS/ucx.spec | 372 ++++++++++++++++++ 4 files changed, 438 insertions(+) create mode 100644 .gitignore create mode 100644 .ucx.metadata create mode 100644 SOURCES/0001-TOOLS-INFO-Update-help-message-for-context-features.patch create mode 100644 SPECS/ucx.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d3d2512 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/ucx-1.11.2.tar.gz diff --git a/.ucx.metadata b/.ucx.metadata new file mode 100644 index 0000000..466cc51 --- /dev/null +++ b/.ucx.metadata @@ -0,0 +1 @@ +47a560f7334ba17ac3342969e74af9169ed75d57 SOURCES/ucx-1.11.2.tar.gz diff --git a/SOURCES/0001-TOOLS-INFO-Update-help-message-for-context-features.patch b/SOURCES/0001-TOOLS-INFO-Update-help-message-for-context-features.patch new file mode 100644 index 0000000..4fe9289 --- /dev/null +++ b/SOURCES/0001-TOOLS-INFO-Update-help-message-for-context-features.patch @@ -0,0 +1,64 @@ +From caa228ab400b154634a7cbe48168e05cfae91881 Mon Sep 17 00:00:00 2001 +From: Yossi Itigin +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 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 + diff --git a/SPECS/ucx.spec b/SPECS/ucx.spec new file mode 100644 index 0000000..f0fa705 --- /dev/null +++ b/SPECS/ucx.spec @@ -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 - 1.11.2-2 +- TOOLS/INFO: Update help message for context features +- Related: rhbz#1991185 + +* Mon Nov 01 2021 Honggang Li - 1.11.2-1 +- Bump version to 1.11.2 +- Related: rhbz#2015402 + +* Tue Aug 10 2021 Mohan Boddu - 1.10.1-3 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Mon Jul 12 2021 Honggang Li - 1.10.1-2 +- Bump version to 1.10.1 +- Related: rhbz#1858571 + +* Fri Apr 16 2021 Mohan Boddu - 1.9.0-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Mon Nov 2 2020 Orion Poplawski - 1.9.0-1 +- Update to 1.9.0 + +* Fri Oct 30 2020 Jeff Law 1.8.1-5 +- Adjust workaround for gcc-11 diagnostic to narrow its scope + +* Thu Oct 29 2020 Jeff Law 1.8.1-4 +- Disable -Warray-bounds diagnostics for gcc-11 + +* Wed Jul 29 2020 Fedora Release Engineering - 1.8.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 20 2020 Jeff Law 1.8.1-2 +- Fix broken configure files compromised by LTO + +* Wed Jul 1 2020 Yossi Itigin 1.8.1-1 +- Bump version to 1.8.1 +* Sun Sep 22 2019 Yossi Itigin 1.8.0-1 +- Bump version to 1.8.0 +* Sun Mar 24 2019 Yossi Itigin 1.7.0-1 +- Bump version to 1.7.0 +* 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 +* Tue Oct 30 2018 Andrey Maslennikov 1.4.0-1 +- See NEWS for details +* Mon Aug 20 2018 Andrey Maslennikov 1.3.1-1 +- See NEWS for details +* Thu Aug 16 2018 Andrey Maslennikov 1.3.0-1 +- Explicitly set gcc-c++ as requirements +* Wed Mar 7 2018 Andrey Maslennikov 1.3.0-1 +- See NEWS for details +* Mon Aug 21 2017 Andrey Maslennikov 1.2.1-1 +- Spec file now complies with Fedora guidelines +* Mon Jul 3 2017 Andrey Maslennikov 1.2.0-1 +- Fedora package created