Skip to content

Commit e9fd855

Browse files
Expanded program test suite
Make sure to exercise addressof_ref() methods of SyclProgram and SyclKernel. Add an example of invalid source code to trip throwing of an exception.
1 parent fc4584d commit e9fd855

File tree

1 file changed

+36
-25
lines changed

1 file changed

+36
-25
lines changed

dpctl/tests/test_sycl_program.py

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,24 @@ def get_spirv_abspath(fn):
3131
return spirv_file
3232

3333

34+
def _check_multi_kernel_program(prog):
35+
assert type(prog) is dpctl_prog.SyclProgram
36+
37+
assert type(prog.addressof_ref()) is int
38+
assert prog.has_sycl_kernel("add")
39+
assert prog.has_sycl_kernel("axpy")
40+
41+
addKernel = prog.get_sycl_kernel("add")
42+
axpyKernel = prog.get_sycl_kernel("axpy")
43+
44+
assert "add" == addKernel.get_function_name()
45+
assert "axpy" == axpyKernel.get_function_name()
46+
assert 3 == addKernel.get_num_args()
47+
assert 4 == axpyKernel.get_num_args()
48+
assert type(addKernel.addressof_ref()) is int
49+
assert type(axpyKernel.addressof_ref()) is int
50+
51+
3452
def test_create_program_from_source_ocl():
3553
oclSrc = " \
3654
kernel void add(global int* a, global int* b, global int* c) { \
@@ -46,18 +64,7 @@ def test_create_program_from_source_ocl():
4664
except dpctl.SyclQueueCreationError:
4765
pytest.skip("No OpenCL queue is available")
4866
prog = dpctl_prog.create_program_from_source(q, oclSrc)
49-
assert prog is not None
50-
51-
assert prog.has_sycl_kernel("add")
52-
assert prog.has_sycl_kernel("axpy")
53-
54-
addKernel = prog.get_sycl_kernel("add")
55-
axpyKernel = prog.get_sycl_kernel("axpy")
56-
57-
assert "add" == addKernel.get_function_name()
58-
assert "axpy" == axpyKernel.get_function_name()
59-
assert 3 == addKernel.get_num_args()
60-
assert 4 == axpyKernel.get_num_args()
67+
_check_multi_kernel_program(prog)
6168

6269

6370
def test_create_program_from_spirv_ocl():
@@ -69,17 +76,7 @@ def test_create_program_from_spirv_ocl():
6976
with open(spirv_file, "rb") as fin:
7077
spirv = fin.read()
7178
prog = dpctl_prog.create_program_from_spirv(q, spirv)
72-
assert prog is not None
73-
assert prog.has_sycl_kernel("add")
74-
assert prog.has_sycl_kernel("axpy")
75-
76-
addKernel = prog.get_sycl_kernel("add")
77-
axpyKernel = prog.get_sycl_kernel("axpy")
78-
79-
assert "add" == addKernel.get_function_name()
80-
assert "axpy" == axpyKernel.get_function_name()
81-
assert 3 == addKernel.get_num_args()
82-
assert 4 == axpyKernel.get_num_args()
79+
_check_multi_kernel_program(prog)
8380

8481

8582
def test_create_program_from_spirv_l0():
@@ -90,7 +87,8 @@ def test_create_program_from_spirv_l0():
9087
spirv_file = get_spirv_abspath("multi_kernel.spv")
9188
with open(spirv_file, "rb") as fin:
9289
spirv = fin.read()
93-
dpctl_prog.create_program_from_spirv(q, spirv)
90+
prog = dpctl_prog.create_program_from_spirv(q, spirv)
91+
_check_multi_kernel_program(prog)
9492

9593

9694
@pytest.mark.xfail(
@@ -110,4 +108,17 @@ def test_create_program_from_source_l0():
110108
size_t index = get_global_id(0); \
111109
c[index] = a[index] + d*b[index]; \
112110
}"
113-
dpctl_prog.create_program_from_source(q, oclSrc)
111+
prog = dpctl_prog.create_program_from_source(q, oclSrc)
112+
_check_multi_kernel_program(prog)
113+
114+
115+
def test_create_program_from_invalid_src_ocl():
116+
try:
117+
q = dpctl.SyclQueue("opencl")
118+
except dpctl.SyclQueueCreationError:
119+
pytest.skip("No OpenCL queue is available")
120+
invalid_oclSrc = " \
121+
kernel void add( \
122+
}"
123+
with pytest.raises(dpctl_prog.SyclProgramCompilationError):
124+
dpctl_prog.create_program_from_source(q, invalid_oclSrc)

0 commit comments

Comments
 (0)