1
- // ===---------- test_sycl_program_interface.cpp - dpctl-C_API --*- - C++ -*-===//
1
+ // ===---------- test_sycl_program_interface.cpp - dpctl-C_API ---* - C++ -*-===//
2
2
//
3
3
// Data Parallel Control Library (dpCtl)
4
4
//
29
29
#include " dpctl_sycl_program_interface.h"
30
30
#include " dpctl_sycl_queue_interface.h"
31
31
#include " dpctl_sycl_queue_manager.h"
32
-
32
+ # include " Config/dpctl_config.h "
33
33
#include < array>
34
34
#include < fstream>
35
35
#include < filesystem>
@@ -127,12 +127,16 @@ struct TestDPCTLSyclProgramInterface : public ::testing::Test
127
127
size_t spirvFileSize = 0 ;
128
128
std::vector<char > spirvBuffer;
129
129
size_t nOpenCLGpuQ = 0 ;
130
+ #ifdef DPCTL_ENABLE_LO_PROGRAM_CREATION
131
+ size_t nL0GpuQ = 0 ;
132
+ #endif
130
133
131
134
TestDPCTLSyclProgramInterface () :
132
135
spirvFile{" ./multi_kernel.spv" , std::ios::binary | std::ios::ate},
133
136
spirvFileSize (std::filesystem::file_size(" ./multi_kernel.spv" )),
134
137
spirvBuffer (spirvFileSize),
135
- nOpenCLGpuQ (DPCTLQueueMgr_GetNumQueues(DPCTL_OPENCL, DPCTL_GPU))
138
+ nOpenCLGpuQ (DPCTLQueueMgr_GetNumQueues(DPCTL_OPENCL, DPCTL_GPU)),
139
+ nL0GpuQ (DPCTLQueueMgr_GetNumQueues(DPCTL_LEVEL_ZERO, DPCTL_GPU))
136
140
{
137
141
spirvFile.seekg (0 , std::ios::beg);
138
142
spirvFile.read (spirvBuffer.data (), spirvFileSize);
@@ -152,7 +156,7 @@ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromOCLSource)
152
156
auto QueueRef = DPCTLQueueMgr_GetQueue (DPCTL_OPENCL, DPCTL_GPU, 0 );
153
157
auto CtxRef = DPCTLQueue_GetContext (QueueRef);
154
158
auto PRef = DPCTLProgram_CreateFromOCLSource (CtxRef, CLProgramStr,
155
- CompileOpts);
159
+ CompileOpts);
156
160
ASSERT_TRUE (PRef != nullptr );
157
161
ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " add" ));
158
162
ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " axpy" ));
@@ -162,15 +166,36 @@ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromOCLSource)
162
166
DPCTLProgram_Delete (PRef);
163
167
}
164
168
165
- TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromOCLSpirv )
169
+ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromSpirvOCL )
166
170
{
167
171
if (!nOpenCLGpuQ)
168
172
GTEST_SKIP_ (" Skipping as no OpenCL GPU device found.\n " );
169
173
170
174
auto QueueRef = DPCTLQueueMgr_GetQueue (DPCTL_OPENCL, DPCTL_GPU, 0 );
171
175
auto CtxRef = DPCTLQueue_GetContext (QueueRef);
172
- auto PRef = DPCTLProgram_CreateFromOCLSpirv (CtxRef, spirvBuffer.data (),
173
- spirvFileSize);
176
+ auto PRef = DPCTLProgram_CreateFromSpirv (CtxRef, spirvBuffer.data (),
177
+ spirvFileSize,
178
+ nullptr );
179
+ ASSERT_TRUE (PRef != nullptr );
180
+ ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " add" ));
181
+ ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " axpy" ));
182
+
183
+ DPCTLQueue_Delete (QueueRef);
184
+ DPCTLContext_Delete (CtxRef);
185
+ DPCTLProgram_Delete (PRef);
186
+ }
187
+
188
+ #ifdef DPCTL_ENABLE_LO_PROGRAM_CREATION
189
+ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromSpirvL0)
190
+ {
191
+ if (!nL0GpuQ)
192
+ GTEST_SKIP_ (" Skipping as no OpenCL GPU device found.\n " );
193
+
194
+ auto QueueRef = DPCTLQueueMgr_GetQueue (DPCTL_LEVEL_ZERO, DPCTL_GPU, 0 );
195
+ auto CtxRef = DPCTLQueue_GetContext (QueueRef);
196
+ auto PRef = DPCTLProgram_CreateFromSpirv (CtxRef, spirvBuffer.data (),
197
+ spirvFileSize,
198
+ nullptr );
174
199
ASSERT_TRUE (PRef != nullptr );
175
200
ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " add" ));
176
201
ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " axpy" ));
@@ -179,6 +204,7 @@ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromOCLSpirv)
179
204
DPCTLContext_Delete (CtxRef);
180
205
DPCTLProgram_Delete (PRef);
181
206
}
207
+ #endif
182
208
183
209
TEST_F (TestDPCTLSyclProgramInterface, CheckGetKernelOCLSource)
184
210
{
@@ -207,15 +233,15 @@ TEST_F (TestDPCTLSyclProgramInterface, CheckGetKernelOCLSource)
207
233
DPCTLProgram_Delete (PRef);
208
234
}
209
235
210
- TEST_F (TestDPCTLSyclProgramInterface, CheckGetKernelOCLSpirv )
236
+ TEST_F (TestDPCTLSyclProgramInterface, CheckGetKernelSpirv )
211
237
{
212
238
if (!nOpenCLGpuQ)
213
239
GTEST_SKIP_ (" Skipping as no OpenCL GPU device found.\n " );
214
240
215
241
auto QueueRef = DPCTLQueueMgr_GetQueue (DPCTL_OPENCL, DPCTL_GPU, 0 );
216
242
auto CtxRef = DPCTLQueue_GetContext (QueueRef);
217
- auto PRef = DPCTLProgram_CreateFromOCLSpirv (CtxRef, spirvBuffer.data (),
218
- spirvFileSize);
243
+ auto PRef = DPCTLProgram_CreateFromSpirv (CtxRef, spirvBuffer.data (),
244
+ spirvFileSize, nullptr );
219
245
auto AddKernel = DPCTLProgram_GetKernel (PRef, " add" );
220
246
auto AxpyKernel = DPCTLProgram_GetKernel (PRef, " axpy" );
221
247
0 commit comments