From c83fc76b8939725cee104008c1376bc3cdb0bd8d Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 22 Oct 2015 17:38:39 -0500
Subject: [PATCH] Determinism fixes to automatic axis assignments

---
 loopy/kernel/tools.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py
index f6adfeebf..769301ed9 100644
--- a/loopy/kernel/tools.py
+++ b/loopy/kernel/tools.py
@@ -686,7 +686,7 @@ def get_auto_axis_iname_ranking_by_stride(kernel, insn):
             aggregate_strides[iname] = aggregate_strides.get(iname, 0) + stride
 
     if aggregate_strides:
-        very_large_stride = np.iinfo(np.int32).max
+        very_large_stride = int(np.iinfo(np.int32).max)
 
         return sorted((iname for iname in kernel.insn_inames(insn)),
                 key=lambda iname: (
@@ -824,7 +824,9 @@ def assign_automatic_axes(kernel, axis=0, local_size=None):
             #  numbered "valid" passes--assign the remainder by length.
 
             # assign longest auto axis inames first
-            auto_axis_inames.sort(key=kernel.get_constant_iname_length, reverse=True)
+            auto_axis_inames.sort(
+                            key=lambda iname: (kernel.get_constant_iname_length(iname), iname),
+                            reverse=True)
 
             if auto_axis_inames:
                 return assign_axis(axis, auto_axis_inames.pop())
-- 
GitLab