diff --git a/tests/generator_scripts/scripts/TestSyclBuffer.py b/tests/generator_scripts/scripts/TestSyclBuffer.py new file mode 100644 index 0000000000000000000000000000000000000000..d041756a08f07f74815366a09b79310eb2c5cca6 --- /dev/null +++ b/tests/generator_scripts/scripts/TestSyclBuffer.py @@ -0,0 +1,35 @@ +import pystencils as ps +import sympy as sp +from pystencilssfg import SourceFileGenerator +from pystencilssfg.lang.cpp.sycl_accessor import sycl_accessor_ref +import pystencilssfg.extensions.sycl as sycl + + +with SourceFileGenerator() as sfg: + sfg = sycl.SyclComposer(sfg) + + u_src, u_dst, f = ps.fields("u_src, u_dst, f : double[2D]", layout="fzyx") + h = sp.Symbol("h") + + jacobi_update = [ + ps.Assignment( + u_dst.center(), + (h**2 * f[0, 0] + u_src[1, 0] + u_src[-1, 0] + u_src[0, 1] + u_src[0, -1]) + / 4, + ) + ] + + kernel_config = ps.CreateKernelConfig(target=ps.Target.SYCL) + jacobi_kernel = sfg.kernels.create(jacobi_update, config=kernel_config) + + cgh = sfg.sycl_handler("handler") + rang = sfg.sycl_range(2, "range") + mappings = [ + sfg.map_field(u_src, sycl_accessor_ref(u_src)), + sfg.map_field(u_dst, sycl_accessor_ref(u_dst)), + sfg.map_field(f, sycl_accessor_ref(f)), + ] + + sfg.function("jacobiUpdate")( + cgh.parallel_for(rang)(*mappings, sfg.call(jacobi_kernel)), + ) diff --git a/tests/generator_scripts/test_generator_scripts.py b/tests/generator_scripts/test_generator_scripts.py index 16adba2ec1ff9731f799609a5635cc49f3de5a0f..316e0e0f5a57aeb80f6c13ed23f39536ca1209ef 100644 --- a/tests/generator_scripts/test_generator_scripts.py +++ b/tests/generator_scripts/test_generator_scripts.py @@ -74,7 +74,7 @@ SCRIPTS = [ "--sfg-file-extensionss", ".c++,.h++", ), - should_fail=True + should_fail=True, ), ScriptInfo.make( "TestExtraCommandLineArgs", @@ -85,13 +85,19 @@ SCRIPTS = [ "--precision", "float32", "test1", - "test2" + "test2", ), ), ScriptInfo.make("Structural", ("hpp", "cpp")), ScriptInfo.make("SimpleJacobi", ("hpp", "cpp"), compilable_output="cpp"), ScriptInfo.make("SimpleClasses", ("hpp", "cpp")), ScriptInfo.make("Variables", ("hpp", "cpp"), compilable_output="cpp"), + ScriptInfo.make( + "TestSyclBuffer", + ("hpp", "cpp"), + compilable_output="cpp" if shutil.which("icpx") else None, + compile_cmd="icpx -fsycl -std=c++20" if shutil.which("icpx") else "", + ), ] @@ -113,13 +119,17 @@ def test_generator_script(script_info: ScriptInfo): shutil.rmtree(output_dir) os.makedirs(output_dir, exist_ok=True) - args = ["python", script_file, "--sfg-output-dir", output_dir] + list(script_info.args) + args = ["python", script_file, "--sfg-output-dir", output_dir] + list( + script_info.args + ) result = subprocess.run(args) if script_info.should_fail: if result.returncode == 0: - pytest.fail(f"Generator script {script_name} was supposed to fail, but didn't.") + pytest.fail( + f"Generator script {script_name} was supposed to fail, but didn't." + ) return if result.returncode != 0: