Skip to content

Commit 8d662b5

Browse files
committed
run SYCL source compilation tests on Level Zero if possible
1 parent ece9fa0 commit 8d662b5

1 file changed

Lines changed: 28 additions & 27 deletions

File tree

dpctl/tests/test_sycl_program.py

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ def _get_opencl_queue_or_skip():
3333
pytest.skip("No OpenCL queue is available")
3434

3535

36+
def _get_level_zero_queue_or_skip():
37+
try:
38+
return dpctl.SyclQueue("level_zero")
39+
except dpctl.SyclQueueCreationError:
40+
pytest.skip("No Level Zero queue is available")
41+
42+
3643
def _skip_if_no_sycl_source_compilation(q):
3744
if not dpctl.program.is_sycl_source_compilation_available():
3845
pytest.skip("SYCL source compilation extension not available")
@@ -216,19 +223,13 @@ def test_create_kernel_bundle_from_source_ocl():
216223
size_t index = get_global_id(0); \
217224
c[index] = a[index] + d*b[index]; \
218225
}"
219-
try:
220-
q = dpctl.SyclQueue("opencl")
221-
except dpctl.SyclQueueCreationError:
222-
pytest.skip("No OpenCL queue is available")
226+
q = _get_opencl_queue_or_skip()
223227
kb = dpctl_prog.create_kernel_bundle_from_source(q, oclSrc)
224228
_check_multi_kernel_program(kb)
225229

226230

227231
def test_create_kernel_bundle_from_spirv_ocl():
228-
try:
229-
q = dpctl.SyclQueue("opencl")
230-
except dpctl.SyclQueueCreationError:
231-
pytest.skip("No OpenCL queue is available")
232+
q = _get_opencl_queue_or_skip()
232233
spirv_file = get_spirv_abspath("multi_kernel.spv")
233234
with open(spirv_file, "rb") as fin:
234235
spirv = fin.read()
@@ -237,10 +238,7 @@ def test_create_kernel_bundle_from_spirv_ocl():
237238

238239

239240
def test_create_kernel_bundle_from_spirv_l0():
240-
try:
241-
q = dpctl.SyclQueue("level_zero")
242-
except dpctl.SyclQueueCreationError:
243-
pytest.skip("No Level-zero queue is available")
241+
q = _get_level_zero_queue_or_skip()
244242
spirv_file = get_spirv_abspath("multi_kernel.spv")
245243
with open(spirv_file, "rb") as fin:
246244
spirv = fin.read()
@@ -249,13 +247,10 @@ def test_create_kernel_bundle_from_spirv_l0():
249247

250248

251249
@pytest.mark.xfail(
252-
reason="Level-zero backend does not support compilation from source"
250+
reason="Level Zero backend does not support compilation from source"
253251
)
254252
def test_create_kernel_bundle_from_source_l0():
255-
try:
256-
q = dpctl.SyclQueue("level_zero")
257-
except dpctl.SyclQueueCreationError:
258-
pytest.skip("No Level-zero queue is available")
253+
q = _get_level_zero_queue_or_skip()
259254
oclSrc = " \
260255
kernel void add(global int* a, global int* b, global int* c) { \
261256
size_t index = get_global_id(0); \
@@ -270,19 +265,19 @@ def test_create_kernel_bundle_from_source_l0():
270265

271266

272267
def test_create_kernel_bundle_from_invalid_src_ocl():
273-
try:
274-
q = dpctl.SyclQueue("opencl")
275-
except dpctl.SyclQueueCreationError:
276-
pytest.skip("No OpenCL queue is available")
268+
q = _get_opencl_queue_or_skip()
277269
invalid_oclSrc = " \
278270
kernel void add( \
279271
}"
280272
with pytest.raises(dpctl_prog.SyclKernelBundleCompilationError):
281273
dpctl_prog.create_kernel_bundle_from_source(q, invalid_oclSrc)
282274

283275

284-
def test_create_kernel_bundle_from_sycl_source():
285-
q = _get_opencl_queue_or_skip()
276+
@pytest.mark.parametrize(
277+
"queue_selector", [_get_opencl_queue_or_skip, _get_level_zero_queue_or_skip]
278+
)
279+
def test_create_kernel_bundle_from_sycl_source(queue_selector):
280+
q = queue_selector()
286281
_skip_if_no_sycl_source_compilation(q)
287282

288283
sycl_source = """
@@ -386,8 +381,11 @@ def test_create_kernel_bundle_from_sycl_source():
386381
_check_cpython_api_SyclKernelBundle_GetKernelBundleRef(prog)
387382

388383

389-
def test_create_kernel_bundle_from_invalid_src_sycl():
390-
q = _get_opencl_queue_or_skip()
384+
@pytest.mark.parametrize(
385+
"queue_selector", [_get_opencl_queue_or_skip, _get_level_zero_queue_or_skip]
386+
)
387+
def test_create_kernel_bundle_from_invalid_src_sycl(queue_selector):
388+
q = queue_selector()
391389
_skip_if_no_sycl_source_compilation(q)
392390

393391
sycl_source = """
@@ -423,8 +421,11 @@ def test_sycl_source_compilation_is_available_returns_bool():
423421
assert type(v) is bool
424422

425423

426-
def test_sycl_source_vector_add_correctness():
427-
q = _get_opencl_queue_or_skip()
424+
@pytest.mark.parametrize(
425+
"queue_selector", [_get_opencl_queue_or_skip, _get_level_zero_queue_or_skip]
426+
)
427+
def test_sycl_source_vector_add_correctness(queue_selector):
428+
q = queue_selector()
428429
_skip_if_no_sycl_source_compilation(q)
429430

430431
sycl_source = """

0 commit comments

Comments
 (0)