From fd1e5380fe3235cbd63227d44c8ddcd38b4371bebd1f1585d4bdfc01ef2d8c1d Mon Sep 17 00:00:00 2001 From: Nicolas Morey-Chaisemartin Date: Mon, 25 Feb 2019 16:53:29 +0000 Subject: [PATCH] Accepting request 678966 from home:NMoreyChaisemartin:branches:science:HPC - Update openucx-s390x-support.patch to fix support of 1.5.0 on s390x - Add baselibs.conf for ppc - Update to v1.5.0 (bsc#1121267) * Features: * New emulation mode enabling full UCX functionality (Atomic, Put, Get) * over TCP and RDMA-CORE interconnects which don't implement full RDMA semantics * Non-blocking API for all one-sided operations. All blocking communication APIs marked * as deprecated * New client/server connection establishment API, which allows connected handover between workers * Support for rdma-core direct-verbs (DEVX) and DC with mlx5 transports * GPU - Support for stream API and receive side pipelining * Malloc hooks using binary instrumentation instead of symbol override * Statistics for UCT tag API * GPU-to-Infiniband HCA affinity support based on locality/distance (PCIe) * Bugfixes: * Fix overflow in RC/DC flush operations * Update description in SPEC file and README * Fix RoCE source port for dc_mlx5 flow control * Improve ucx_info help message * Fix segfault in UCP, due to int truncation in count_one_bits() * Multiple other bugfixes (full list on github) * Tested configurations: * InfiniBand: MLNX_OFED 4.4-4.5, distribution inbox drivers, rdma-core * CUDA: gdrcopy 1.2, cuda 9.1.85 * XPMEM: 2.6.2 * KNEM: 1.1.2 OBS-URL: https://build.opensuse.org/request/show/678966 OBS-URL: https://build.opensuse.org/package/show/science:HPC/openucx?expand=0&rev=27 --- baselibs.conf | 4 ++ openucx-s390x-support.patch | 107 +++++++++++++++++++++++++++++++++--- openucx.changes | 37 +++++++++++++ openucx.spec | 5 +- ucx-1.4.0.tar.gz | 3 - ucx-1.5.0.tar.gz | 3 + 6 files changed, 145 insertions(+), 14 deletions(-) create mode 100644 baselibs.conf delete mode 100644 ucx-1.4.0.tar.gz create mode 100644 ucx-1.5.0.tar.gz diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..db87919 --- /dev/null +++ b/baselibs.conf @@ -0,0 +1,4 @@ +libucm0 +libucp0 +libucs0 +libuct0 diff --git a/openucx-s390x-support.patch b/openucx-s390x-support.patch index 0b40d2c..fb09f65 100644 --- a/openucx-s390x-support.patch +++ b/openucx-s390x-support.patch @@ -1,4 +1,4 @@ -commit c4261cb194ce2f87c564c22f5cb795f33fce6f5f +commit 621654abd1ca34a407d8033991659c45d42c3a4e Author: Nicolas Morey-Chaisemartin Date: Thu Aug 9 07:41:24 2018 +0200 @@ -6,11 +6,98 @@ Date: Thu Aug 9 07:41:24 2018 +0200 Signed-off-by: Nicolas Morey-Chaisemartin +diff --git config/m4/ucm.m4 config/m4/ucm.m4 +index 541bdb1322ce..4f89f6e02860 100644 +--- config/m4/ucm.m4 ++++ config/m4/ucm.m4 +@@ -86,9 +86,19 @@ AC_CHECK_DECLS([SYS_ipc], + [ipc_hooks_happy=no], + [#include ]) + ++SAVE_CFLAGS=$CFLAGS ++CFLAGS="$CLAGS -Isrc/" ++bistro_arch_happy=yes ++AC_CHECK_DECLS([ucm_bistro_patch], ++ [], ++ [ipc_hooks_happy=no], ++ [#include ]) ++CFLAGS=$SAVE_CFLAGS ++ + AS_IF([test "x$mmap_hooks_happy" == "xyes"], + AS_IF([test "x$ipc_hooks_happy" == "xyes" -o "x$shm_hooks_happy" == "xyes"], +- [bistro_hooks_happy=yes])) ++ AS_IF([test "x$bistro_arch_happy" == "xyes"], ++ [bistro_hooks_happy=yes]))) + + AS_IF([test "x$bistro_hooks_happy" == "xyes"], + [AC_DEFINE([UCM_BISTRO_HOOKS], [1], [Enable BISTRO hooks])], +diff --git src/ucm/Makefile.am src/ucm/Makefile.am +index 74090c4f2440..e466c13395b7 100644 +--- src/ucm/Makefile.am ++++ src/ucm/Makefile.am +@@ -40,7 +40,8 @@ noinst_HEADERS = \ + bistro/bistro.h \ + bistro/bistro_x86_64.h \ + bistro/bistro_aarch64.h \ +- bistro/bistro_ppc64.h ++ bistro/bistro_ppc64.h \ ++ bistro/bistro_s390x.h + + if HAVE_CUDA + noinst_HEADERS += \ +diff --git src/ucm/bistro/bistro.h src/ucm/bistro/bistro.h +index 16e988700c35..b4c2762fb5b2 100644 +--- src/ucm/bistro/bistro.h ++++ src/ucm/bistro/bistro.h +@@ -20,6 +20,8 @@ typedef struct ucm_bistro_restore_point ucm_bistro_restore_point_t; + # include "bistro_aarch64.h" + #elif defined(__x86_64__) + # include "bistro_x86_64.h" ++#elif defined(__s390x__) ++# include "bistro_s390x.h" + #else + # error "Unsupported architecture" + #endif +diff --git src/ucm/bistro/bistro_s390x.h src/ucm/bistro/bistro_s390x.h +new file mode 100644 +index 000000000000..334c0474e8b6 +--- /dev/null ++++ src/ucm/bistro/bistro_s390x.h +@@ -0,0 +1,13 @@ ++#ifndef UCM_BISTRO_BISTRO_S390X_H_ ++#define UCM_BISTRO_BISTRO_S390X_H_ ++ ++#include ++ ++#include ++#include ++ ++#define UCM_BISTRO_PROLOGUE ++#define UCM_BISTRO_EPILOGUE ++ ++ ++#endif +diff --git src/ucm/mmap/install.c src/ucm/mmap/install.c +index ebf22aaa0415..80ed26838837 100644 +--- src/ucm/mmap/install.c ++++ src/ucm/mmap/install.c +@@ -173,7 +173,11 @@ static ucs_status_t ucs_mmap_install_reloc(int events) + status = ucm_reloc_modify(&entry->patch); + } else { + ucs_assert(ucm_mmap_hook_mode() == UCM_MMAP_HOOK_BISTRO); ++#if UCM_BISTRO_HOOKS + status = ucm_bistro_patch(entry->patch.symbol, entry->patch.value, NULL); ++#else ++ status = UCS_ERR_UNSUPPORTED; ++#endif + } + if (status != UCS_OK) { + ucm_warn("failed to install %s hook for '%s'", diff --git src/ucs/Makefile.am src/ucs/Makefile.am -index 74edce424728..43a50e893f77 100644 +index f82540e775a4..592d89c51109 100644 --- src/ucs/Makefile.am +++ src/ucs/Makefile.am -@@ -53,6 +53,8 @@ noinst_HEADERS = \ +@@ -57,6 +57,8 @@ noinst_HEADERS = \ arch/generic/cpu.h \ arch/ppc64/bitops.h \ arch/ppc64/cpu.h \ @@ -20,7 +107,7 @@ index 74edce424728..43a50e893f77 100644 arch/x86_64/bitops.h \ arch/x86_64/cpu.h \ diff --git src/ucs/arch/atomic.h src/ucs/arch/atomic.h -index 7649971b407b..7bb2bc36c483 100644 +index 0caea9b1f3ba..d9afa780bbc5 100644 --- src/ucs/arch/atomic.h +++ src/ucs/arch/atomic.h @@ -15,6 +15,8 @@ @@ -33,7 +120,7 @@ index 7649971b407b..7bb2bc36c483 100644 # error "Unsupported architecture" #endif diff --git src/ucs/arch/bitops.h src/ucs/arch/bitops.h -index f4dd3ab45964..de53bde0d33f 100644 +index 2049b7c71c8a..a4eceeea52e7 100644 --- src/ucs/arch/bitops.h +++ src/ucs/arch/bitops.h @@ -14,6 +14,8 @@ @@ -46,10 +133,10 @@ index f4dd3ab45964..de53bde0d33f 100644 # error "Unsupported architecture" #endif diff --git src/ucs/arch/cpu.h src/ucs/arch/cpu.h -index 1c362bc92fba..14172218e24c 100644 +index 58a83825ee4a..a30456ba441d 100644 --- src/ucs/arch/cpu.h +++ src/ucs/arch/cpu.h -@@ -56,6 +56,8 @@ typedef enum ucs_cpu_flag { +@@ -59,6 +59,8 @@ typedef enum ucs_cpu_flag { # include "ppc64/cpu.h" #elif defined(__aarch64__) # include "aarch64/cpu.h" @@ -98,10 +185,10 @@ index 000000000000..39ad125107e9 +#endif diff --git src/ucs/arch/s390x/cpu.h src/ucs/arch/s390x/cpu.h new file mode 100644 -index 000000000000..f5131ea30a8f +index 000000000000..b8ab713d6e21 --- /dev/null +++ src/ucs/arch/s390x/cpu.h -@@ -0,0 +1,51 @@ +@@ -0,0 +1,53 @@ +/** +* Copyright (C) Mellanox Technologies Ltd. 2001-2013. ALL RIGHTS RESERVED. +* Copyright (C) ARM Ltd. 2016-2017. ALL RIGHTS RESERVED. @@ -124,9 +211,11 @@ index 000000000000..f5131ea30a8f +#define ucs_memory_bus_fence() asm volatile (""::: "memory") +#define ucs_memory_bus_store_fence() ucs_memory_bus_fence() +#define ucs_memory_bus_load_fence() ucs_memory_bus_fence() ++#define ucs_memory_bus_wc_flush() ucs_memory_bus_fence() +#define ucs_memory_cpu_fence() ucs_memory_bus_fence() +#define ucs_memory_cpu_store_fence() ucs_memory_bus_fence() +#define ucs_memory_cpu_load_fence() ucs_memory_bus_fence() ++#define ucs_memory_cpu_wc_fence() ucs_memory_bus_fence() + + +static inline uint64_t ucs_arch_read_hres_clock() diff --git a/openucx.changes b/openucx.changes index 7ee4a57..4dd5156 100644 --- a/openucx.changes +++ b/openucx.changes @@ -1,3 +1,40 @@ +------------------------------------------------------------------- +Mon Feb 25 07:56:39 UTC 2019 - nmorey + +- Update openucx-s390x-support.patch to fix support of 1.5.0 on s390x +- Add baselibs.conf for ppc + +------------------------------------------------------------------- +Fri Feb 22 12:11:57 UTC 2019 - Martin Liška + +- Update to v1.5.0 (bsc#1121267) + * Features: + + * New emulation mode enabling full UCX functionality (Atomic, Put, Get) + * over TCP and RDMA-CORE interconnects which don't implement full RDMA semantics + * Non-blocking API for all one-sided operations. All blocking communication APIs marked + * as deprecated + * New client/server connection establishment API, which allows connected handover between workers + * Support for rdma-core direct-verbs (DEVX) and DC with mlx5 transports + * GPU - Support for stream API and receive side pipelining + * Malloc hooks using binary instrumentation instead of symbol override + * Statistics for UCT tag API + * GPU-to-Infiniband HCA affinity support based on locality/distance (PCIe) + * Bugfixes: + + * Fix overflow in RC/DC flush operations + * Update description in SPEC file and README + * Fix RoCE source port for dc_mlx5 flow control + * Improve ucx_info help message + * Fix segfault in UCP, due to int truncation in count_one_bits() + * Multiple other bugfixes (full list on github) + * Tested configurations: + + * InfiniBand: MLNX_OFED 4.4-4.5, distribution inbox drivers, rdma-core + * CUDA: gdrcopy 1.2, cuda 9.1.85 + * XPMEM: 2.6.2 + * KNEM: 1.1.2 + ------------------------------------------------------------------- Tue Nov 6 07:18:34 UTC 2018 - nmoreychaisemartin@suse.com diff --git a/openucx.spec b/openucx.spec index 1c56603..7434557 100644 --- a/openucx.spec +++ b/openucx.spec @@ -1,7 +1,7 @@ # # spec file for package openucx # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,13 +20,14 @@ Name: openucx Summary: Unifieid Communication X License: BSD-3-Clause Group: Development/Libraries/C and C++ -Version: 1.4.0 +Version: 1.5.0 Release: 0 Url: http://openucx.org/ #Git-Clone: git://github.com/openucx/ucx #Git-Web: https://github.com/openucx/ucx Source: https://github.com/openucx/ucx/releases/download/v%version/ucx-%version.tar.gz +Source1: baselibs.conf Patch1: openucx-s390x-support.patch BuildRequires: autoconf >= 2.63 BuildRequires: automake >= 1.10 diff --git a/ucx-1.4.0.tar.gz b/ucx-1.4.0.tar.gz deleted file mode 100644 index 71c4016..0000000 --- a/ucx-1.4.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:99891a98476bcadc6ac4ef9c9f083bc6ffb188a96b3c3bc89c8bbca64de2c76e -size 1777644 diff --git a/ucx-1.5.0.tar.gz b/ucx-1.5.0.tar.gz new file mode 100644 index 0000000..e70766c --- /dev/null +++ b/ucx-1.5.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84f6e4fa5740afebb9b1c8bb405c07206e58c56f83120dcfcd8dc89e4b7d7458 +size 1838263