1- // ===---------- test_sycl_program_interface.cpp - dpctl-C_API --*- - C++ -*-===//
1+ // ===---------- test_sycl_program_interface.cpp - dpctl-C_API ---* - C++ -*-===//
22//
33// Data Parallel Control Library (dpCtl)
44//
2929#include " dpctl_sycl_program_interface.h"
3030#include " dpctl_sycl_queue_interface.h"
3131#include " dpctl_sycl_queue_manager.h"
32-
32+ # include " Config/dpctl_config.h "
3333#include < array>
3434#include < fstream>
3535#include < filesystem>
@@ -127,12 +127,16 @@ struct TestDPCTLSyclProgramInterface : public ::testing::Test
127127 size_t spirvFileSize = 0 ;
128128 std::vector<char > spirvBuffer;
129129 size_t nOpenCLGpuQ = 0 ;
130+ #ifdef DPCTL_ENABLE_LO_PROGRAM_CREATION
131+ size_t nL0GpuQ = 0 ;
132+ #endif
130133
131134 TestDPCTLSyclProgramInterface () :
132135 spirvFile{" ./multi_kernel.spv" , std::ios::binary | std::ios::ate},
133136 spirvFileSize (std::filesystem::file_size(" ./multi_kernel.spv" )),
134137 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))
136140 {
137141 spirvFile.seekg (0 , std::ios::beg);
138142 spirvFile.read (spirvBuffer.data (), spirvFileSize);
@@ -152,7 +156,7 @@ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromOCLSource)
152156 auto QueueRef = DPCTLQueueMgr_GetQueue (DPCTL_OPENCL, DPCTL_GPU, 0 );
153157 auto CtxRef = DPCTLQueue_GetContext (QueueRef);
154158 auto PRef = DPCTLProgram_CreateFromOCLSource (CtxRef, CLProgramStr,
155- CompileOpts);
159+ CompileOpts);
156160 ASSERT_TRUE (PRef != nullptr );
157161 ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " add" ));
158162 ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " axpy" ));
@@ -162,15 +166,36 @@ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromOCLSource)
162166 DPCTLProgram_Delete (PRef);
163167}
164168
165- TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromOCLSpirv )
169+ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromSpirvOCL )
166170{
167171 if (!nOpenCLGpuQ)
168172 GTEST_SKIP_ (" Skipping as no OpenCL GPU device found.\n " );
169173
170174 auto QueueRef = DPCTLQueueMgr_GetQueue (DPCTL_OPENCL, DPCTL_GPU, 0 );
171175 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 );
174199 ASSERT_TRUE (PRef != nullptr );
175200 ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " add" ));
176201 ASSERT_TRUE (DPCTLProgram_HasKernel (PRef, " axpy" ));
@@ -179,6 +204,7 @@ TEST_F (TestDPCTLSyclProgramInterface, CheckCreateFromOCLSpirv)
179204 DPCTLContext_Delete (CtxRef);
180205 DPCTLProgram_Delete (PRef);
181206}
207+ #endif
182208
183209TEST_F (TestDPCTLSyclProgramInterface, CheckGetKernelOCLSource)
184210{
@@ -207,15 +233,15 @@ TEST_F (TestDPCTLSyclProgramInterface, CheckGetKernelOCLSource)
207233 DPCTLProgram_Delete (PRef);
208234}
209235
210- TEST_F (TestDPCTLSyclProgramInterface, CheckGetKernelOCLSpirv )
236+ TEST_F (TestDPCTLSyclProgramInterface, CheckGetKernelSpirv )
211237{
212238 if (!nOpenCLGpuQ)
213239 GTEST_SKIP_ (" Skipping as no OpenCL GPU device found.\n " );
214240
215241 auto QueueRef = DPCTLQueueMgr_GetQueue (DPCTL_OPENCL, DPCTL_GPU, 0 );
216242 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 );
219245 auto AddKernel = DPCTLProgram_GetKernel (PRef, " add" );
220246 auto AxpyKernel = DPCTLProgram_GetKernel (PRef, " axpy" );
221247
0 commit comments