|
18 | 18 | """
|
19 | 19 |
|
20 | 20 | import ctypes
|
| 21 | +import os |
21 | 22 |
|
22 | 23 | import numpy as np
|
23 | 24 | import pytest
|
@@ -278,3 +279,43 @@ def test_kernel_arg_type():
|
278 | 279 | _check_kernel_arg_type_instance(kernel_arg_type.dpctl_float64)
|
279 | 280 | _check_kernel_arg_type_instance(kernel_arg_type.dpctl_void_ptr)
|
280 | 281 | _check_kernel_arg_type_instance(kernel_arg_type.dpctl_local_accessor)
|
| 282 | + |
| 283 | + |
| 284 | +def get_spirv_abspath(fn): |
| 285 | + curr_dir = os.path.dirname(os.path.abspath(__file__)) |
| 286 | + spirv_file = os.path.join(curr_dir, "input_files", fn) |
| 287 | + return spirv_file |
| 288 | + |
| 289 | + |
| 290 | +def test_submit_local_accessor_arg(): |
| 291 | + try: |
| 292 | + q = dpctl.SyclQueue("level_zero") |
| 293 | + except dpctl.SyclQueueCreationError: |
| 294 | + pytest.skip("OpenCL queue could not be created") |
| 295 | + fn = get_spirv_abspath("local_accessor_kernel_inttys_fp32.spv") |
| 296 | + with open(fn, "br") as f: |
| 297 | + spirv_bytes = f.read() |
| 298 | + prog = dpctl_prog.create_program_from_spirv(q, spirv_bytes) |
| 299 | + krn = prog.get_sycl_kernel("_ZTS14SyclKernel_SLMIlE") |
| 300 | + lws = 32 |
| 301 | + gws = lws * 10 |
| 302 | + x = dpt.ones(gws, dtype="i8") |
| 303 | + x.sycl_queue.wait() |
| 304 | + try: |
| 305 | + e = q.submit( |
| 306 | + krn, |
| 307 | + [x.usm_data, dpctl._sycl_queue.LocalAccessor(1, "i8", lws, 1, 1)], |
| 308 | + [ |
| 309 | + gws, |
| 310 | + ], |
| 311 | + [ |
| 312 | + lws, |
| 313 | + ], |
| 314 | + ) |
| 315 | + e.wait() |
| 316 | + except dpctl._sycl_queue.SyclKernelSubmitError: |
| 317 | + pytest.skip(f"Kernel submission failed for device {q.sycl_device}") |
| 318 | + expected = dpt.arange(1, x.size + 1, dtype=x.dtype, device=x.device) * ( |
| 319 | + 2 * lws |
| 320 | + ) |
| 321 | + assert dpt.all(x == expected) |
0 commit comments