@@ -98,35 +98,40 @@ int main() {
98
98
{
99
99
cl::sycl::queue q;
100
100
std::vector<int > dataVec (10 );
101
- std::iota (dataVec. begin (), dataVec. end (), 0 );
101
+
102
102
// Precompiled kernel invocation
103
- {
104
- cl::sycl::range<1 > numOfItems (dataVec.size ());
105
- cl::sycl::buffer<int , 1 > buf (dataVec.data (), numOfItems);
106
- cl::sycl::program prg (q.get_context ());
107
- assert (prg.get_state () == cl::sycl::program_state::none);
108
- // Test compiling -> linking
109
- prg.compile_with_kernel_type <class ParallelFor >();
110
- assert (prg.get_state () == cl::sycl::program_state::compiled);
111
- prg.link ();
112
- assert (prg.get_state () == cl::sycl::program_state::linked);
113
- assert (prg.has_kernel <class ParallelFor >());
114
- cl::sycl::kernel krn = prg.get_kernel <class ParallelFor >();
115
- assert (krn.get_context () == q.get_context ());
116
- assert (krn.get_program () == prg);
103
+ // TODO Disabled on GPU, revert once compile -> link issue is fixed there
104
+ if (!q.get_device ().is_gpu ()) {
105
+ std::iota (dataVec.begin (), dataVec.end (), 0 );
106
+ {
107
+ cl::sycl::range<1 > numOfItems (dataVec.size ());
108
+ cl::sycl::buffer<int , 1 > buf (dataVec.data (), numOfItems);
109
+ cl::sycl::program prg (q.get_context ());
110
+ assert (prg.get_state () == cl::sycl::program_state::none);
111
+ // Test compiling -> linking
112
+ prg.compile_with_kernel_type <class ParallelFor >();
113
+ assert (prg.get_state () == cl::sycl::program_state::compiled);
114
+ prg.link ();
115
+ assert (prg.get_state () == cl::sycl::program_state::linked);
116
+ assert (prg.has_kernel <class ParallelFor >());
117
+ cl::sycl::kernel krn = prg.get_kernel <class ParallelFor >();
118
+ assert (krn.get_context () == q.get_context ());
119
+ assert (krn.get_program () == prg);
117
120
118
- q.submit ([&](cl::sycl::handler &cgh) {
119
- auto acc = buf.get_access <cl::sycl::access::mode::read_write>(cgh);
120
- cgh.parallel_for <class ParallelFor >(
121
- numOfItems, krn,
122
- [=](cl::sycl::id<1 > wiID) { acc[wiID] = acc[wiID] + 1 ; });
123
- });
124
- }
125
- for (size_t i = 0 ; i < dataVec.size (); ++i) {
126
- assert (dataVec[i] == i + 1 );
121
+ q.submit ([&](cl::sycl::handler &cgh) {
122
+ auto acc = buf.get_access <cl::sycl::access::mode::read_write>(cgh);
123
+ cgh.parallel_for <class ParallelFor >(
124
+ numOfItems, krn,
125
+ [=](cl::sycl::id<1 > wiID) { acc[wiID] = acc[wiID] + 1 ; });
126
+ });
127
+ }
128
+ for (size_t i = 0 ; i < dataVec.size (); ++i) {
129
+ assert (dataVec[i] == i + 1 );
130
+ }
127
131
}
128
132
129
133
// OpenCL interoperability kernel invocation
134
+ std::iota (dataVec.begin (), dataVec.end (), 0 );
130
135
if (!q.is_host ()) {
131
136
cl_int err;
132
137
{
@@ -158,7 +163,7 @@ int main() {
158
163
clReleaseContext (clCtx);
159
164
assert (err == CL_SUCCESS);
160
165
for (size_t i = 0 ; i < dataVec.size (); ++i) {
161
- assert (dataVec[i] == i + 2 );
166
+ assert (dataVec[i] == i + 1 );
162
167
}
163
168
}
164
169
}
0 commit comments