From d862626f27396de12643ddfdbbd3316217b98845 Mon Sep 17 00:00:00 2001
From: Christoph Alt <christoph.alt@fau.de>
Date: Thu, 28 Nov 2024 13:54:14 +0100
Subject: [PATCH] added a test for the parallel_for

---
 tests/extensions/test_sycl.py                 | 64 +++++++++++++++++++
 .../{test_sycl.py => test_sycl_accessor.py}   |  0
 2 files changed, 64 insertions(+)
 create mode 100644 tests/extensions/test_sycl.py
 rename tests/lang/{test_sycl.py => test_sycl_accessor.py} (100%)

diff --git a/tests/extensions/test_sycl.py b/tests/extensions/test_sycl.py
new file mode 100644
index 0000000..db99278
--- /dev/null
+++ b/tests/extensions/test_sycl.py
@@ -0,0 +1,64 @@
+import pytest
+from pystencilssfg import SourceFileGenerator
+import pystencilssfg.extensions.sycl as sycl
+import pystencils as ps
+from pystencilssfg import SfgContext
+
+
+def test_parallel_for_1_kernels():
+    sfg = sycl.SyclComposer(SfgContext())
+    data_type = "double"
+    dim = 2
+    f, g, h, i = ps.fields(f"f,g,h,i:{data_type}[{dim}D]")
+    assignement_1 = ps.Assignment(f.center(), g.center())
+    assignement_2 = ps.Assignment(h.center(), i.center())
+
+    config = ps.CreateKernelConfig(target=ps.Target.SYCL)
+    kernel_1 = sfg.kernels.create(assignement_1, "kernel_1", config)
+    kernel_2 = sfg.kernels.create(assignement_2, "kernel_2", config)
+    cgh = sfg.sycl_handler("handler")
+    rang = sfg.sycl_range(dim, "range")
+    cgh.parallel_for(rang)(
+        sfg.call(kernel_1),
+        sfg.call(kernel_2),
+    )
+
+
+def test_parallel_for_2_kernels():
+    sfg = sycl.SyclComposer(SfgContext())
+    data_type = "double"
+    dim = 2
+    f, g, h, i = ps.fields(f"f,g,h,i:{data_type}[{dim}D]")
+    assignement_1 = ps.Assignment(f.center(), g.center())
+    assignement_2 = ps.Assignment(h.center(), i.center())
+
+    config = ps.CreateKernelConfig(target=ps.Target.SYCL)
+    kernel_1 = sfg.kernels.create(assignement_1, "kernel_1", config)
+    kernel_2 = sfg.kernels.create(assignement_2, "kernel_2", config)
+    cgh = sfg.sycl_handler("handler")
+    rang = sfg.sycl_range(dim, "range")
+    cgh.parallel_for(rang)(
+        sfg.call(kernel_1),
+        sfg.call(kernel_2),
+    )
+
+
+def test_parallel_for_2_kernels_fail():
+    sfg = sycl.SyclComposer(SfgContext())
+    data_type = "double"
+    dim = 2
+    f, g = ps.fields(f"f,g:{data_type}[{dim}D]")
+    h, i = ps.fields(f"h,i:{data_type}[{dim-1}D]")
+    assignement_1 = ps.Assignment(f.center(), g.center())
+    assignement_2 = ps.Assignment(h.center(), i.center())
+
+    config = ps.CreateKernelConfig(target=ps.Target.SYCL)
+    kernel_1 = sfg.kernels.create(assignement_1, "kernel_1", config)
+    kernel_2 = sfg.kernels.create(assignement_2, "kernel_2", config)
+    cgh = sfg.sycl_handler("handler")
+    rang = sfg.sycl_range(dim, "range")
+    with pytest.raises(ValueError):
+        cgh.parallel_for(rang)(
+            sfg.call(kernel_1),
+            sfg.call(kernel_2),
+        )
diff --git a/tests/lang/test_sycl.py b/tests/lang/test_sycl_accessor.py
similarity index 100%
rename from tests/lang/test_sycl.py
rename to tests/lang/test_sycl_accessor.py
-- 
GitLab