Skip to content

Commit 143a2e4

Browse files
author
Jaime Arteaga
committed
[UR][L0] Add support for urAdapterGetLastError in L0
Signed-off-by: Jaime Arteaga <[email protected]>
1 parent be53fb3 commit 143a2e4

File tree

6 files changed

+30
-21
lines changed

6 files changed

+30
-21
lines changed

source/adapters/level_zero/adapter.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,17 +175,19 @@ UR_APIEXPORT ur_result_t UR_APICALL urAdapterRetain(ur_adapter_handle_t) {
175175
}
176176

177177
UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetLastError(
178-
ur_adapter_handle_t Adapter, ///< [in] handle of the platform instance
178+
[[maybe_unused]] ur_adapter_handle_t
179+
AdapterHandle, ///< [in] handle of the platform instance
179180
const char **Message, ///< [out] pointer to a C string where the adapter
180181
///< specific error message will be stored.
181-
int32_t *Error ///< [out] pointer to an integer where the adapter specific
182-
///< error code will be stored.
182+
[[maybe_unused]] int32_t
183+
*Error ///< [out] pointer to an integer where the adapter specific
184+
///< error code will be stored.
183185
) {
184-
std::ignore = Adapter;
185-
std::ignore = Message;
186-
std::ignore = Error;
187-
urPrint("[UR][L0] %s function not implemented!\n", __FUNCTION__);
188-
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
186+
AdapterHandle = &Adapter;
187+
*Message = ErrorMessage;
188+
Error = &ErrorAdapterNativeCode;
189+
190+
return ErrorMessageCode;
189191
}
190192

191193
UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetInfo(ur_adapter_handle_t,

source/adapters/level_zero/common.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -280,13 +280,16 @@ template <> zes_structure_type_t getZesStructureType<zes_mem_properties_t>() {
280280
// Global variables for ZER_EXT_RESULT_ADAPTER_SPECIFIC_ERROR
281281
thread_local ur_result_t ErrorMessageCode = UR_RESULT_SUCCESS;
282282
thread_local char ErrorMessage[MaxMessageSize];
283+
thread_local int32_t ErrorAdapterNativeCode;
283284

284285
// Utility function for setting a message and warning
285-
[[maybe_unused]] void setErrorMessage(const char *message,
286-
ur_result_t error_code) {
287-
assert(strlen(message) <= MaxMessageSize);
288-
strcpy(ErrorMessage, message);
289-
ErrorMessageCode = error_code;
286+
[[maybe_unused]] void setErrorMessage(const char *pMessage,
287+
ur_result_t ErrorCode,
288+
int32_t AdapterErrorCode) {
289+
assert(strlen(pMessage) <= MaxMessageSize);
290+
strcpy(ErrorMessage, pMessage);
291+
ErrorMessageCode = ErrorCode;
292+
ErrorAdapterNativeCode = AdapterErrorCode;
290293
}
291294

292295
ur_result_t zerPluginGetLastError(char **message) {

source/adapters/level_zero/common.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,9 @@ constexpr char ZE_SUPPORTED_EXTENSIONS[] =
467467
constexpr size_t MaxMessageSize = 256;
468468
extern thread_local ur_result_t ErrorMessageCode;
469469
extern thread_local char ErrorMessage[MaxMessageSize];
470+
extern thread_local int32_t ErrorAdapterNativeCode;
470471

471472
// Utility function for setting a message and warning
472-
[[maybe_unused]] void setErrorMessage(const char *message,
473-
ur_result_t error_code);
473+
[[maybe_unused]] void setErrorMessage(const char *pMessage,
474+
ur_result_t ErrorCode,
475+
int32_t AdapterErrorCode);

source/adapters/level_zero/device.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(
631631
case UR_DEVICE_INFO_GLOBAL_MEM_FREE: {
632632
if (getenv("ZES_ENABLE_SYSMAN") == nullptr) {
633633
setErrorMessage("Set ZES_ENABLE_SYSMAN=1 to obtain free memory",
634-
UR_RESULT_SUCCESS);
634+
UR_RESULT_ERROR_UNINITIALIZED,
635+
static_cast<int32_t>(ZE_RESULT_ERROR_UNINITIALIZED));
635636
return UR_RESULT_ERROR_ADAPTER_SPECIFIC;
636637
}
637638
// Only report device memory which zeMemAllocDevice can allocate from.

source/adapters/level_zero/kernel.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableWrite(
284284
(Program->ZeModule, Name, &GlobalVarSize, &GlobalVarPtr));
285285
if (GlobalVarSize < Offset + Count) {
286286
setErrorMessage("Write device global variable is out of range.",
287-
UR_RESULT_ERROR_INVALID_VALUE);
288-
return UR_RESULT_ERROR_UNKNOWN;
287+
UR_RESULT_ERROR_INVALID_VALUE,
288+
static_cast<int32_t>(ZE_RESULT_ERROR_INVALID_ARGUMENT));
289+
return UR_RESULT_ERROR_ADAPTER_SPECIFIC;
289290
}
290291

291292
// Copy engine is preferred only for host to device transfer.
@@ -333,8 +334,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableRead(
333334
(Program->ZeModule, Name, &GlobalVarSize, &GlobalVarPtr));
334335
if (GlobalVarSize < Offset + Count) {
335336
setErrorMessage("Read from device global variable is out of range.",
336-
UR_RESULT_ERROR_INVALID_VALUE);
337-
return UR_RESULT_ERROR_UNKNOWN;
337+
UR_RESULT_ERROR_INVALID_VALUE,
338+
static_cast<int32_t>(ZE_RESULT_ERROR_INVALID_ARGUMENT));
339+
return UR_RESULT_ERROR_ADAPTER_SPECIFIC;
338340
}
339341

340342
// Copy engine is preferred only for host to device transfer.
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
urAdapterGetLastErrorTest.Success

0 commit comments

Comments
 (0)