commit legion for openSUSE:Factory
Hello community,
here is the log from the commit of package legion for openSUSE:Factory checked in at 2017-06-30 18:42:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/legion (Old)
and /work/SRC/openSUSE:Factory/.legion.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "legion"
Fri Jun 30 18:42:52 2017 rev:5 rq:507148 version:17.05.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/legion/legion.changes 2017-06-15 11:24:22.599070277 +0200
+++ /work/SRC/openSUSE:Factory/.legion.new/legion.changes 2017-06-30 18:43:45.518345143 +0200
@@ -1,0 +2,7 @@
+Thu Jun 22 15:01:27 UTC 2017 - nmoreychaisemartin@suse.com
+
+- Fix support on big endian systems by adding:
+ * realm-detect-big-endian-systems-and-reverse-order-of-ID-fields.patch
+ * tutorial-fix-bad-type-size-causing-crash-on-big-endian-systems.patch
+
+-------------------------------------------------------------------
New:
----
realm-detect-big-endian-systems-and-reverse-order-of-ID-fields.patch
tutorial-fix-bad-type-size-causing-crash-on-big-endian-systems.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ legion.spec ++++++
--- /var/tmp/diff_new_pack.h837KP/_old 2017-06-30 18:43:46.090264699 +0200
+++ /var/tmp/diff_new_pack.h837KP/_new 2017-06-30 18:43:46.090264699 +0200
@@ -25,6 +25,8 @@
Group: Productivity/Networking/Other
Url: http://legion.stanford.edu/
Source0: https://github.com/StanfordLegion/legion/archive/%{name}-%{version}.tar.gz#/%{name}-%{version}.tar.gz
+Patch0: realm-detect-big-endian-systems-and-reverse-order-of-ID-fields.patch
+Patch1: tutorial-fix-bad-type-size-causing-crash-on-big-endian-systems.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -34,8 +36,6 @@
BuildRequires: hwloc-devel
BuildRequires: openmpi
BuildRequires: openmpi-devel
-# Bug opened upstream https://github.com/StanfordLegion/legion/issues/265
-ExcludeArch: ppc64 s390x
%description
Legion is a data-centric parallel programming system for writing portable
@@ -82,6 +82,8 @@
%prep
%setup -q -n %{name}-%{name}-%{version}
+%patch0
+%patch1
%build
%{cmake} -DLegion_USE_HWLOC=ON \
++++++ realm-detect-big-endian-systems-and-reverse-order-of-ID-fields.patch ++++++
diff --git runtime/realm/id.h runtime/realm/id.h
index b68bed1a..d645d89a 100644
--- runtime/realm/id.h
+++ runtime/realm/id.h
@@ -20,6 +20,16 @@
#include <iostream>
+// we use bit-field structures below, and the order of them isn't guaranteed to
+// match the system endianness (which itself has no standard way to be
+// detected, so define our own REALM_REVERSE_ID_FIELDS which can be further
+// tweaked as needed
+#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
+ #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+ #define REALM_REVERSE_ID_FIELDS
+ #endif
+#endif
+
namespace Realm {
class ID {
@@ -46,83 +56,154 @@ namespace Realm {
static const unsigned MAX_NODE_ID = (1U << NODE_FIELD_WIDTH) - 2; // reserve all 1's for special cases
struct FMT_Event {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 1;
+ IDType creator_node : NODE_FIELD_WIDTH;
+ IDType gen_event_idx : 27;
+ IDType generation : 20;
+#else
IDType generation : 20;
IDType gen_event_idx : 27;
IDType creator_node : NODE_FIELD_WIDTH;
IDType type_tag : 1;
+#endif
static const IDType TAG_VALUE = 1;
};
struct FMT_Barrier {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 4;
+ IDType creator_node : 16;
+ IDType barrier_idx : 24;
+ IDType generation : 20; // MUST MATCH FMT_Event::generation size
+#else
IDType generation : 20; // MUST MATCH FMT_Event::generation size
IDType barrier_idx : 24;
IDType creator_node : 16;
IDType type_tag : 4;
+#endif
static const IDType TAG_VALUE = 0x7;
};
struct FMT_Reservation {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 8;
+ IDType creator_node : 16;
+ IDType unused : 8;
+ IDType rsrv_idx : 32;
+#else
IDType rsrv_idx : 32;
IDType unused : 8;
IDType creator_node : 16;
IDType type_tag : 8;
+#endif
static const IDType TAG_VALUE = 0x1f;
};
struct FMT_Memory {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 8;
+ IDType owner_node : 16;
+ IDType unused : 28;
+ IDType mem_idx : 12;
+#else
IDType mem_idx : 12;
IDType unused : 28;
IDType owner_node : 16;
IDType type_tag : 8;
+#endif
static const IDType TAG_VALUE = 0x1e;
};
struct FMT_IB_Memory {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 8;
+ IDType owner_node : 16;
+ IDType unused : 28;
+ IDType mem_idx : 12;
+#else
IDType mem_idx : 12;
IDType unused : 28;
IDType owner_node : 16;
IDType type_tag : 8;
+#endif
static const IDType TAG_VALUE = 0x1a;
};
struct FMT_Instance {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 4;
+ IDType owner_node : 16;
+ IDType creator_node : 16;
+ IDType mem_idx : 12;
+ IDType inst_idx : 16;
+#else
IDType inst_idx : 16;
IDType mem_idx : 12;
IDType creator_node : 16;
IDType owner_node : 16;
IDType type_tag : 4;
+#endif
static const IDType TAG_VALUE = 0x6;
};
struct FMT_Processor {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 8;
+ IDType owner_node : 16;
+ IDType unused : 28;
+ IDType proc_idx : 12;
+#else
IDType proc_idx : 12;
IDType unused : 28;
IDType owner_node : 16;
IDType type_tag : 8;
+#endif
static const IDType TAG_VALUE = 0x1d;
};
struct FMT_ProcGroup {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 8;
+ IDType owner_node : 16;
+ IDType creator_node : 16;
+ IDType pgroup_idx : 24;
+#else
IDType pgroup_idx : 24;
IDType creator_node : 16;
IDType owner_node : 16;
IDType type_tag : 8;
+#endif
static const IDType TAG_VALUE = 0x1c;
};
struct FMT_IdxSpace {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 4;
+ IDType owner_node : 16;
+ IDType creator_node : 16;
+ IDType idxspace_idx : 28;
+#else
IDType idxspace_idx : 28;
IDType creator_node : 16;
IDType owner_node : 16;
IDType type_tag : 4;
+#endif
static const IDType TAG_VALUE = 0x5;
};
struct FMT_Allocator {
+#ifdef REALM_REVERSE_ID_FIELDS
+ IDType type_tag : 8;
+ IDType owner_node : 16;
+ IDType creator_node : 16;
+ IDType allocator_idx : 24;
+#else
IDType allocator_idx : 24;
IDType creator_node : 16;
IDType owner_node : 16;
IDType type_tag : 8;
+#endif
static const IDType TAG_VALUE = 0x1b;
};
++++++ tutorial-fix-bad-type-size-causing-crash-on-big-endian-systems.patch ++++++
diff --git tutorial/09_custom_mapper/custom_mapper.cc tutorial/09_custom_mapper/custom_mapper.cc
index 4d4adaea..3ceea606 100644
--- tutorial/09_custom_mapper/custom_mapper.cc
+++ tutorial/09_custom_mapper/custom_mapper.cc
@@ -709,7 +709,7 @@ void top_level_task(const Task *task,
}
int num_subregions =
runtime->select_tunable_value(ctx, SUBREGION_TUNABLE,
- PARTITIONING_MAPPER_ID).get_result<int>();
+ PARTITIONING_MAPPER_ID).get_result
participants (1)
-
root@hilbert.suse.de