From 9d11577fbabb2c7c97de984a2a084be232f9c17a Mon Sep 17 00:00:00 2001
From: Frederik Hennig <frederik.hennig@fau.de>
Date: Wed, 10 Jul 2024 12:28:02 +0200
Subject: [PATCH] fix SYCL order of dimensions

---
 src/pystencils/backend/platforms/sycl.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/pystencils/backend/platforms/sycl.py b/src/pystencils/backend/platforms/sycl.py
index fdc19a0c4..52953115a 100644
--- a/src/pystencils/backend/platforms/sycl.py
+++ b/src/pystencils/backend/platforms/sycl.py
@@ -101,7 +101,13 @@ class SyclPlatform(GenericGpu):
 
         indexing_decls = [id_decl]
         conds = []
-        for i, dim in enumerate(dimensions[::-1]):
+
+        #   Other than in CUDA, SYCL ids are linearized in C order
+        #   The leftmost entry of an ID varies slowest, and the rightmost entry varies fastest
+        #   See https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html#sec:multi-dim-linearization
+
+        for i, dim in enumerate(dimensions):
+            #   Slowest to fastest
             coord = PsExpression.make(PsConstant(i, self._ctx.index_dtype))
             work_item_idx = PsSubscript(id_symbol, coord)
 
-- 
GitLab