99// ===----------------------------------------------------------------------===//
1010
1111#include " program.hpp"
12+ #include " device.hpp"
1213#include " logger/ur_logger.hpp"
13- #include " ur_level_zero.hpp"
14+
15+ #ifdef UR_ADAPTER_LEVEL_ZERO_V2
16+ #include " context.hpp"
17+ #else
18+ #include " v2/context.hpp"
19+ #endif
1420
1521extern " C" {
1622// Check to see if a Level Zero module has any unresolved symbols.
@@ -115,8 +121,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramBuild(
115121 const char *Options // /< [in][optional] pointer to build options
116122 // /< null-terminated string.
117123) {
118- return urProgramBuildExp (Program, Context->Devices . size (),
119- Context-> Devices .data (), Options);
124+ std::vector< ur_device_handle_t > Devices = Context->getDevices ();
125+ return urProgramBuildExp (Program, Devices. size (), Devices.data (), Options);
120126}
121127
122128UR_APIEXPORT ur_result_t UR_APICALL urProgramBuildExp (
@@ -174,7 +180,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramBuildExp(
174180
175181 for (uint32_t i = 0 ; i < numDevices; i++) {
176182 ze_device_handle_t ZeDevice = phDevices[i]->ZeDevice ;
177- ze_context_handle_t ZeContext = hProgram->Context ->ZeContext ;
183+ ze_context_handle_t ZeContext = hProgram->Context ->getZeHandle () ;
178184 ze_module_handle_t ZeModuleHandle = nullptr ;
179185 ze_module_build_log_handle_t ZeBuildLog{};
180186
@@ -266,7 +272,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramCompile(
266272 // ze-opt-greater-than-4GB-buffer-required to disable
267273 // stateful optimizations and be able to use larger than
268274 // 4GB allocations on these kernels.
269- if (Context->Devices [0 ]->useRelaxedAllocationLimits ()) {
275+ if (Context->getDevices () [0 ]->useRelaxedAllocationLimits ()) {
270276 Program->BuildFlags += " -ze-opt-greater-than-4GB-buffer-required" ;
271277 }
272278 }
@@ -285,9 +291,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramLink(
285291 ur_program_handle_t
286292 *Program // /< [out] pointer to handle of program object created.
287293) {
288- return urProgramLinkExp (Context, Context->Devices . size (),
289- Context-> Devices .data (), Count, Programs, Options ,
290- Program);
294+ std::vector< ur_device_handle_t > Devices = Context->getDevices ();
295+ return urProgramLinkExp (Context, Devices. size (), Devices.data (), Count,
296+ Programs, Options, Program);
291297}
292298
293299UR_APIEXPORT ur_result_t UR_APICALL urProgramLinkExp (
@@ -426,7 +432,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramLinkExp(
426432
427433 // Call the Level Zero API to compile, link, and create the module.
428434 ze_device_handle_t ZeDevice = phDevices[i]->ZeDevice ;
429- ze_context_handle_t ZeContext = hContext->ZeContext ;
435+ ze_context_handle_t ZeContext = hContext->getZeHandle () ;
430436 ze_module_handle_t ZeModule = nullptr ;
431437 ze_module_build_log_handle_t ZeBuildLog = nullptr ;
432438 ze_result_t ZeResult =
@@ -652,7 +658,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramGetInfo(
652658 for (auto &ZeModulePair : Program->ZeModuleMap ) {
653659 auto It = Program->ZeModuleMap .find (ZeModulePair.first );
654660 if (It != Program->ZeModuleMap .end ()) {
655- for (auto &Device : Program->Context ->Devices ) {
661+ for (auto &Device : Program->Context ->getDevices () ) {
656662 if (Device->ZeDevice == ZeModulePair.first ) {
657663 devices.push_back (Device);
658664 }
@@ -661,7 +667,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramGetInfo(
661667 }
662668 return ReturnValue (devices.data (), devices.size ());
663669 } else {
664- return ReturnValue (Program->Context ->Devices [0 ]);
670+ return ReturnValue (Program->Context ->getDevices () [0 ]);
665671 }
666672 case UR_PROGRAM_INFO_BINARY_SIZES: {
667673 std::shared_lock<ur_shared_mutex> Guard (Program->Mutex );
0 commit comments