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<size_t>(); printf("Running daxpy for %d elements...\n", num_elements); printf("Partitioning data into %d sub-regions...\n", num_subregions);
participants (1)
-
root@hilbert.suse.de