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> <services>
<service name="tar_scm" mode="localonly"> <service name="tar_scm" mode="disabled">
<param name="scm">git</param> <param name="scm">git</param>
<param name="url">git://github.com/openucx/ucx</param> <param name="url">git://github.com/openucx/ucx</param>
<param name="revision">6cb0d7189bd53534575a992a2bdb27dd1cb66e22</param> <param name="revision">master</param>
<param name="parent-tag">20bf38e8c57df29815c512aa19fb194cf0527f3d</param> <param name="parent-tag">9f8e93fc392a456cc86a60b55f02ef3086a6c616</param>
<param name="versionformat">0~git@TAG_OFFSET@</param> <param name="versionformat">1.3+git@TAG_OFFSET@</param>
</service> </service>
<service name="recompress" mode="localonly"> <service name="recompress" mode="disabled">
<param name="file">*.tar</param> <param name="file">*.tar</param>
<param name="compression">xz</param> <param name="compression">xz</param>
</service> </service>
<service name="set_version" mode="localonly"/> <service name="set_version" mode="disabled"/>
</services> </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 Sat Jun 18 07:36:59 UTC 2016 - jengelh@inai.de

View File

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