@@ -31,6 +31,24 @@ def get_spirv_abspath(fn):
31
31
return spirv_file
32
32
33
33
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
+
34
52
def test_create_program_from_source_ocl ():
35
53
oclSrc = " \
36
54
kernel void add(global int* a, global int* b, global int* c) { \
@@ -46,18 +64,7 @@ def test_create_program_from_source_ocl():
46
64
except dpctl .SyclQueueCreationError :
47
65
pytest .skip ("No OpenCL queue is available" )
48
66
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 )
61
68
62
69
63
70
def test_create_program_from_spirv_ocl ():
@@ -69,17 +76,7 @@ def test_create_program_from_spirv_ocl():
69
76
with open (spirv_file , "rb" ) as fin :
70
77
spirv = fin .read ()
71
78
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 )
83
80
84
81
85
82
def test_create_program_from_spirv_l0 ():
@@ -90,7 +87,8 @@ def test_create_program_from_spirv_l0():
90
87
spirv_file = get_spirv_abspath ("multi_kernel.spv" )
91
88
with open (spirv_file , "rb" ) as fin :
92
89
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 )
94
92
95
93
96
94
@pytest .mark .xfail (
@@ -110,4 +108,17 @@ def test_create_program_from_source_l0():
110
108
size_t index = get_global_id(0); \
111
109
c[index] = a[index] + d*b[index]; \
112
110
}"
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