SHA256
1
0
forked from pool/openucx

Accepting request 507873 from science:HPC

- Disable avx at configure level

- Add openucx-s390x-support.patch to fix compilation on s390x
- Compile openucx on s390x

- Fix compilation on ppc

- Update to snapshot 1.3+git44
  * No changelog was found
- Add -Wno-error and disable AVX/SSE as it is not guaranteed
  to exist.

OBS-URL: https://build.opensuse.org/request/show/507873
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openucx?expand=0&rev=3
This commit is contained in:
Dominique Leuenberger 2017-07-12 17:33:54 +00:00 committed by Git OBS Bridge
parent ec0b537606
commit 42718c30e4
6 changed files with 216 additions and 33 deletions

View File

@ -1,14 +1,14 @@
<services>
<service name="tar_scm" mode="localonly">
<service name="tar_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">git://github.com/openucx/ucx</param>
<param name="revision">6cb0d7189bd53534575a992a2bdb27dd1cb66e22</param>
<param name="parent-tag">20bf38e8c57df29815c512aa19fb194cf0527f3d</param>
<param name="versionformat">0~git@TAG_OFFSET@</param>
<param name="revision">master</param>
<param name="parent-tag">9f8e93fc392a456cc86a60b55f02ef3086a6c616</param>
<param name="versionformat">1.3+git@TAG_OFFSET@</param>
</service>
<service name="recompress" mode="localonly">
<service name="recompress" mode="disabled">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="localonly"/>
<service name="set_version" mode="disabled"/>
</services>

147
openucx-s390x-support.patch Normal file
View File

@ -0,0 +1,147 @@
diff --git src/ucs/Makefile.am src/ucs/Makefile.am
index ba869dbf..c588cd9d 100644
--- src/ucs/Makefile.am
+++ src/ucs/Makefile.am
@@ -25,6 +25,8 @@ nobase_dist_libucs_la_HEADERS = \
arch/generic/cpu.h \
arch/ppc64/bitops.h \
arch/ppc64/cpu.h \
+ arch/s390x/bitops.h \
+ arch/s390x/cpu.h \
arch/x86_64/atomic.h \
arch/x86_64/bitops.h \
arch/x86_64/cpu.h \
diff --git src/ucs/arch/atomic.h src/ucs/arch/atomic.h
index 7649971b..7bb2bc36 100644
--- src/ucs/arch/atomic.h
+++ src/ucs/arch/atomic.h
@@ -15,6 +15,8 @@
# include "generic/atomic.h"
#elif defined(__aarch64__)
# include "generic/atomic.h"
+#elif defined(__s390x__)
+# include "generic/atomic.h"
#else
# error "Unsupported architecture"
#endif
diff --git src/ucs/arch/bitops.h src/ucs/arch/bitops.h
index f4dd3ab4..de53bde0 100644
--- src/ucs/arch/bitops.h
+++ src/ucs/arch/bitops.h
@@ -14,6 +14,8 @@
# include "ppc64/bitops.h"
#elif defined(__aarch64__)
# include "aarch64/bitops.h"
+#elif defined(__s390x__)
+# include "s390x/bitops.h"
#else
# error "Unsupported architecture"
#endif
diff --git src/ucs/arch/cpu.h src/ucs/arch/cpu.h
index d5127b3d..817ac0d2 100644
--- src/ucs/arch/cpu.h
+++ src/ucs/arch/cpu.h
@@ -52,6 +52,8 @@ typedef enum ucs_cpu_flag {
# include "ppc64/cpu.h"
#elif defined(__aarch64__)
# include "aarch64/cpu.h"
+#elif defined(__s390x__)
+# include "s390x/cpu.h"
#else
# error "Unsupported architecture"
#endif
diff --git src/ucs/arch/s390x/bitops.h src/ucs/arch/s390x/bitops.h
new file mode 100644
index 00000000..39ad1251
--- /dev/null
+++ src/ucs/arch/s390x/bitops.h
@@ -0,0 +1,32 @@
+/**
+* Copyright (C) Mellanox Technologies Ltd. 2001-2015. ALL RIGHTS RESERVED.
+*
+* See file LICENSE for terms.
+*/
+
+#ifndef UCS_S390X_BITOPS_H_
+#define UCS_S390X_BITOPS_H_
+
+#include <stdint.h>
+
+
+static inline unsigned __ucs_ilog2_u32(uint32_t n)
+{
+ if (!n)
+ return 0;
+ return 31 - __builtin_clz(n);
+}
+
+static inline unsigned __ucs_ilog2_u64(uint64_t n)
+{
+ if (!n)
+ return 0;
+ return 63 - __builtin_clz(n);
+}
+
+static inline unsigned ucs_ffs64(uint64_t n)
+{
+ return __ucs_ilog2_u64(n & -n);
+}
+
+#endif
diff --git src/ucs/arch/s390x/cpu.h src/ucs/arch/s390x/cpu.h
new file mode 100644
index 00000000..f5131ea3
--- /dev/null
+++ src/ucs/arch/s390x/cpu.h
@@ -0,0 +1,51 @@
+/**
+* Copyright (C) Mellanox Technologies Ltd. 2001-2013. ALL RIGHTS RESERVED.
+* Copyright (C) ARM Ltd. 2016-2017. ALL RIGHTS RESERVED.
+*
+* See file LICENSE for terms.
+*/
+
+
+#ifndef UCS_S390X_CPU_H_
+#define UCS_S390X_CPU_H_
+
+#include <ucs/sys/compiler.h>
+#include <ucs/arch/generic/cpu.h>
+#include <stdint.h>
+
+
+#define UCS_ARCH_CACHE_LINE_SIZE 256
+
+/* Assume the worst - weak memory ordering */
+#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_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()
+
+
+static inline uint64_t ucs_arch_read_hres_clock()
+{
+ unsigned long clk;
+ asm volatile("stck %0" : "=Q" (clk) : : "cc");
+ return clk >> 2;
+}
+#define ucs_arch_get_clocks_per_sec ucs_arch_generic_get_clocks_per_sec
+
+
+static inline ucs_cpu_model_t ucs_arch_get_cpu_model()
+{
+ return UCS_CPU_MODEL_UNKNOWN;
+}
+
+static inline int ucs_arch_get_cpu_flag()
+{
+ return UCS_CPU_FLAG_UNKNOWN;
+}
+
+double ucs_arch_get_clocks_per_sec();
+
+#define ucs_arch_wait_mem ucs_arch_generic_wait_mem
+
+#endif

View File

@ -1,3 +1,27 @@
-------------------------------------------------------------------
Fri Jun 30 09:30:58 UTC 2017 - nmoreychaisemartin@suse.com
- Disable avx at configure level
-------------------------------------------------------------------
Wed Jun 28 16:46:31 UTC 2017 - nmoreychaisemartin@suse.com
- Add openucx-s390x-support.patch to fix compilation on s390x
- Compile openucx on s390x
-------------------------------------------------------------------
Thu Jun 8 12:12:59 UTC 2017 - nmoreychaisemartin@suse.com
- Fix compilation on ppc
-------------------------------------------------------------------
Fri May 26 08:29:51 UTC 2017 - jengelh@inai.de
- Update to snapshot 1.3+git44
* No changelog was found
- Add -Wno-error and disable AVX/SSE as it is not guaranteed
to exist.
-------------------------------------------------------------------
Sat Jun 18 07:36:59 UTC 2016 - jengelh@inai.de

View File

@ -1,7 +1,7 @@
#
# spec file for package openucx
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017 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
@ -16,29 +16,32 @@
#
%define version_unconverted 0~git1727
%define version_unconverted 1.3+git44
Name: openucx
Summary: Unifieid Communication X
License: BSD-3-Clause
Group: Development/Libraries/C and C++
Version: 0~git1727
Version: 1.3+git44
Release: 0
Url: http://openucx.org/
#Git-Clone: git://github.com/openucx/ucx
#Git-Web: https://github.com/openucx/ucx
Source: ucx-%version.tar.xz
Patch0: openucx-s390x-support.patch
BuildRequires: autoconf >= 2.63
BuildRequires: automake >= 1.10
BuildRequires: binutils-devel
BuildRequires: doxygen
BuildRequires: gcc-c++
BuildRequires: libibverbs-devel
BuildRequires: libnuma-devel
BuildRequires: libtool
BuildRequires: pkg-config
BuildRequires: zlib-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: aarch64 %power64 x86_64
ExclusiveArch: aarch64 %power64 x86_64 s390x
%description
UCX is a communication library implementing high-performance
@ -73,52 +76,52 @@ Requires: libucm0 = %version
libucm is a standalone non-unloadable library which installs hooks
for virtual memory changes in the current process.
%package -n libucp2
%package -n libucp0
Summary: Infiniband Unified Communication Protocols
Group: System/Libraries
%description -n libucp2
%description -n libucp0
High-level API uses UCT framework to construct protocols commonly
found in applications (MPI, OpenSHMEM, PGAS, etc.)
%package -n libucp-devel
Summary: Development files for Unified Communication Protocols (UC-P)
Group: Development/Libraries/C and C++
Requires: libucp2 = %version
Requires: libucp0 = %version
%description -n libucp-devel
High-level API uses UCT framework to construct protocols commonly
found in applications (MPI, OpenSHMEM, PGAS, etc.)
%package -n libucs2
%package -n libucs0
Summary: Infiniband Unicified Communication Services
Group: System/Libraries
%description -n libucs2
%description -n libucs0
This framework provides basic infrastructure for component based
programming, memory management, and useful system utilities.
%package -n libucs-devel
Summary: Development files for Unified Communication Services (UC-S)
Group: Development/Libraries/C and C++
Requires: libucs2 = %version
Requires: libucs0 = %version
%description -n libucs-devel
This framework provides basic infrastructure for component based
programming, memory management, and useful system utilities.
%package -n libuct2
%package -n libuct0
Summary: Infiniband Unified Communication Transport
Group: System/Libraries
%description -n libuct2
%description -n libuct0
Low-level API that expose basic network operations supported by
underlying hardware.
%package -n libuct-devel
Summary: Development files for Unified Communication Transport (UC-T)
Group: Development/Libraries/C and C++
Requires: libuct2 = %version
Requires: libuct0 = %version
%description -n libuct-devel
Low-level API that expose basic network operations supported by
@ -126,18 +129,26 @@ underlying hardware.
%prep
%setup -qn ucx-%version
%patch0
%build
autoreconf -fi
%configure --disable-static
make %{?_smp_mflags}
export UCX_CFLAGS="%optflags -Wno-error"
%ifarch x86_64
export UCX_CFLAGS="$UCX_CFLAGS -mno-avx"
%endif
%ifarch %ix86
export UCX_CFLAGS="$UCX_CFLAGS -mno-sse -mno-sse2"
%endif
%configure --disable-static --without-avx
make %{?_smp_mflags} V=1
%post -n libucp2 -p /sbin/ldconfig
%postun -n libucp2 -p /sbin/ldconfig
%post -n libucs2 -p /sbin/ldconfig
%postun -n libucs2 -p /sbin/ldconfig
%post -n libuct2 -p /sbin/ldconfig
%postun -n libuct2 -p /sbin/ldconfig
%post -n libucp0 -p /sbin/ldconfig
%postun -n libucp0 -p /sbin/ldconfig
%post -n libucs0 -p /sbin/ldconfig
%postun -n libucs0 -p /sbin/ldconfig
%post -n libuct0 -p /sbin/ldconfig
%postun -n libuct0 -p /sbin/ldconfig
%post -n libucm0 -p /sbin/ldconfig
%postun -n libucm0 -p /sbin/ldconfig
@ -149,6 +160,7 @@ rm -fv "%buildroot/%_libdir"/*.la
%defattr(-,root,root)
%_bindir/ucx_*
%_datadir/ucx/
%_libdir/pkgconfig/ucx.pc
%doc LICENSE
%files -n libucm0
@ -160,7 +172,7 @@ rm -fv "%buildroot/%_libdir"/*.la
%_includedir/ucm/
%_libdir/libucm.so
%files -n libucp2
%files -n libucp0
%defattr(-,root,root)
%_libdir/libucp.so.*
@ -169,7 +181,7 @@ rm -fv "%buildroot/%_libdir"/*.la
%_includedir/ucp/
%_libdir/libucp.so
%files -n libucs2
%files -n libucs0
%defattr(-,root,root)
%_libdir/libucs.so.*
@ -178,7 +190,7 @@ rm -fv "%buildroot/%_libdir"/*.la
%_includedir/ucs/
%_libdir/libucs.so
%files -n libuct2
%files -n libuct0
%defattr(-,root,root)
%_libdir/libuct.so.*

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:35dbef55532035054c4621ce94b23ec27cd4e7efd615a31c3d7afab2e9714eff
size 828800

3
ucx-1.3+git44.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:20ddc629f9e7d6b9b681fda25b4b4d79f834c97a03b429d7ec017a5c5a5ca55f
size 1000964