Skip to content

Commit 2d51147

Browse files
martygrantkbenzie
andauthored
[SYCL][UR] Update setErrorMessage to use int32_t instead of ur_result_t for the urAdapterGetLastError entry point (#18264)
Fixes #18260 Also updates `checkUrResult` in SYCL RT to remove warning level check as `urAdapterGetLastError` is now only used for errors. --------- Co-authored-by: Kenneth Benzie (Benie) <[email protected]>
1 parent 4f0bd62 commit 2d51147

File tree

15 files changed

+41
-61
lines changed

15 files changed

+41
-61
lines changed

sycl/source/detail/adapter.hpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,14 @@ class Adapter {
7171
int32_t adapter_error = 0;
7272
ur_result = call_nocheck<UrApiKind::urAdapterGetLastError>(
7373
MAdapter, &message, &adapter_error);
74-
75-
// If the warning level is greater then 2 emit the message
76-
if (message != nullptr &&
77-
detail::SYCLConfig<detail::SYCL_RT_WARNING_LEVEL>::get() >= 2) {
78-
std::clog << message << std::endl;
79-
}
80-
81-
// If it is a warning do not throw code
82-
if (ur_result == UR_RESULT_SUCCESS) {
83-
return;
84-
}
74+
throw sycl::detail::set_ur_error(
75+
sycl::exception(
76+
sycl::make_error_code(errc),
77+
__SYCL_UR_ERROR_REPORT + sycl::detail::codeToString(ur_result) +
78+
(message ? "\n" + std::string(message) + "(adapter error )" +
79+
std::to_string(adapter_error) + "\n"
80+
: std::string{})),
81+
ur_result);
8582
}
8683
if (ur_result != UR_RESULT_SUCCESS) {
8784
throw sycl::detail::set_ur_error(

sycl/source/interop_handle.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ ur_native_handle_t interop_handle::getNativeGraph() const {
7979
}
8080

8181
auto Adapter = MQueue->getAdapter();
82-
ur_native_handle_t Handle;
82+
ur_native_handle_t Handle = 0;
8383
Adapter->call<detail::UrApiKind::urCommandBufferGetNativeHandleExp>(Graph,
8484
&Handle);
8585
return Handle;

unified-runtime/source/adapters/cuda/adapter.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,10 @@ UR_APIEXPORT ur_result_t UR_APICALL urAdapterRelease(ur_adapter_handle_t) {
9090
}
9191

9292
UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetLastError(
93-
ur_adapter_handle_t, const char **ppMessage, int32_t * /*pError*/) {
93+
ur_adapter_handle_t, const char **ppMessage, int32_t *pError) {
9494
*ppMessage = ErrorMessage;
95-
return ErrorMessageCode;
95+
*pError = ErrorMessageCode;
96+
return UR_RESULT_SUCCESS;
9697
}
9798

9899
UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetInfo(ur_adapter_handle_t,

unified-runtime/source/adapters/cuda/common.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,11 @@ std::string getCudaVersionString() {
135135
}
136136

137137
// Global variables for ZER_EXT_RESULT_ADAPTER_SPECIFIC_ERROR
138-
thread_local ur_result_t ErrorMessageCode = UR_RESULT_SUCCESS;
138+
thread_local int32_t ErrorMessageCode = 0;
139139
thread_local char ErrorMessage[MaxMessageSize]{};
140140

141141
// Utility function for setting a message and warning
142-
[[maybe_unused]] void setErrorMessage(const char *pMessage,
143-
ur_result_t ErrorCode) {
142+
[[maybe_unused]] void setErrorMessage(const char *pMessage, int32_t ErrorCode) {
144143
assert(strlen(pMessage) < MaxMessageSize);
145144
// Copy at most MaxMessageSize - 1 bytes to ensure the resultant string is
146145
// always null terminated.

unified-runtime/source/adapters/cuda/common.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,11 @@ void checkErrorUR(ur_result_t Result, const char *Function, int Line,
4848
std::string getCudaVersionString();
4949

5050
constexpr size_t MaxMessageSize = 256;
51-
extern thread_local ur_result_t ErrorMessageCode;
51+
extern thread_local int32_t ErrorMessageCode;
5252
extern thread_local char ErrorMessage[MaxMessageSize];
5353

5454
// Utility function for setting a message and warning
55-
[[maybe_unused]] void setErrorMessage(const char *pMessage,
56-
ur_result_t ErrorCode);
55+
[[maybe_unused]] void setErrorMessage(const char *pMessage, int32_t ErrorCode);
5756

5857
void setPluginSpecificMessage(CUresult cu_res);
5958

unified-runtime/source/adapters/cuda/enqueue.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1682,10 +1682,9 @@ urEnqueueUSMAdvise(ur_queue_handle_t hQueue, const void *pMem, size_t size,
16821682
UR_CHECK_ERROR(cuPointerGetAttribute(
16831683
&IsManaged, CU_POINTER_ATTRIBUTE_IS_MANAGED, (CUdeviceptr)pMem));
16841684
if (!IsManaged) {
1685-
setErrorMessage(
1686-
"Memory advice ignored as memory advices only works with USM",
1687-
UR_RESULT_SUCCESS);
1688-
return UR_RESULT_ERROR_ADAPTER_SPECIFIC;
1685+
logger::warning(
1686+
"Memory advice ignored as memory advices only works with USM.");
1687+
return UR_RESULT_SUCCESS;
16891688
}
16901689

16911690
ur_result_t Result = UR_RESULT_SUCCESS;

unified-runtime/source/adapters/hip/common.cpp

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -157,22 +157,14 @@ hipError_t getHipVersionString(std::string &Version) {
157157
}
158158

159159
// Global variables for UR_RESULT_ADAPTER_SPECIFIC_ERROR
160-
thread_local ur_result_t ErrorMessageCode = UR_RESULT_SUCCESS;
160+
thread_local int32_t ErrorMessageCode = 0;
161161
thread_local char ErrorMessage[MaxMessageSize]{};
162162

163163
// Utility function for setting a message and warning
164-
[[maybe_unused]] void setErrorMessage(const char *pMessage,
165-
ur_result_t ErrorCode) {
164+
[[maybe_unused]] void setErrorMessage(const char *pMessage, int32_t ErrorCode) {
166165
assert(strlen(pMessage) < MaxMessageSize);
167166
// Copy at most MaxMessageSize - 1 bytes to ensure the resultant string is
168167
// always null terminated.
169168
strncpy(ErrorMessage, pMessage, MaxMessageSize - 1);
170169
ErrorMessageCode = ErrorCode;
171170
}
172-
173-
// Returns plugin specific error and warning messages; common implementation
174-
// that can be shared between adapters
175-
ur_result_t urGetLastResult(ur_platform_handle_t, const char **ppMessage) {
176-
*ppMessage = &ErrorMessage[0];
177-
return ErrorMessageCode;
178-
}

unified-runtime/source/adapters/hip/common.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,11 @@ void checkErrorUR(ur_result_t Result, const char *Function, int Line,
106106
hipError_t getHipVersionString(std::string &Version);
107107

108108
constexpr size_t MaxMessageSize = 256;
109-
extern thread_local ur_result_t ErrorMessageCode;
109+
extern thread_local int32_t ErrorMessageCode;
110110
extern thread_local char ErrorMessage[MaxMessageSize];
111111

112112
// Utility function for setting a message and warning
113-
[[maybe_unused]] void setErrorMessage(const char *Message,
114-
ur_result_t ErrorCode);
113+
[[maybe_unused]] void setErrorMessage(const char *Message, int32_t ErrorCode);
115114

116115
// Helper method to return a (non-null) pointer's attributes, or std::nullopt in
117116
// the case that the pointer is unknown to the HIP subsystem.

unified-runtime/source/adapters/level_zero/adapter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ ur_result_t urAdapterGetLastError(
712712
*Message = ErrorMessage;
713713
*Error = ErrorAdapterNativeCode;
714714

715-
return ErrorMessageCode;
715+
return UR_RESULT_SUCCESS;
716716
}
717717

718718
ur_result_t urAdapterGetInfo(ur_adapter_handle_t, ur_adapter_info_t PropName,

unified-runtime/source/adapters/level_zero/common.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -342,13 +342,12 @@ getZeStructureType<ze_intel_device_block_array_exp_properties_t>() {
342342
#endif // ZE_INTEL_DEVICE_BLOCK_ARRAY_EXP_NAME
343343

344344
// Global variables for ZER_EXT_RESULT_ADAPTER_SPECIFIC_ERROR
345-
thread_local ur_result_t ErrorMessageCode = UR_RESULT_SUCCESS;
345+
thread_local int32_t ErrorMessageCode = 0;
346346
thread_local char ErrorMessage[MaxMessageSize]{};
347347
thread_local int32_t ErrorAdapterNativeCode;
348348

349349
// Utility function for setting a message and warning
350-
[[maybe_unused]] void setErrorMessage(const char *pMessage,
351-
ur_result_t ErrorCode,
350+
[[maybe_unused]] void setErrorMessage(const char *pMessage, int32_t ErrorCode,
352351
int32_t AdapterErrorCode) {
353352
assert(strlen(pMessage) < MaxMessageSize);
354353
// Copy at most MaxMessageSize - 1 bytes to ensure the resultant string is
@@ -357,8 +356,3 @@ thread_local int32_t ErrorAdapterNativeCode;
357356
ErrorMessageCode = ErrorCode;
358357
ErrorAdapterNativeCode = AdapterErrorCode;
359358
}
360-
361-
ur_result_t zerPluginGetLastError(char **message) {
362-
*message = &ErrorMessage[0];
363-
return ErrorMessageCode;
364-
}

unified-runtime/source/adapters/level_zero/common.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -373,11 +373,10 @@ constexpr char ZE_SUPPORTED_EXTENSIONS[] =
373373

374374
// Global variables for ZER_EXT_RESULT_ADAPTER_SPECIFIC_ERROR
375375
constexpr size_t MaxMessageSize = 256;
376-
extern thread_local ur_result_t ErrorMessageCode;
376+
extern thread_local int32_t ErrorMessageCode;
377377
extern thread_local char ErrorMessage[MaxMessageSize];
378378
extern thread_local int32_t ErrorAdapterNativeCode;
379379

380380
// Utility function for setting a message and warning
381-
[[maybe_unused]] void setErrorMessage(const char *pMessage,
382-
ur_result_t ErrorCode,
381+
[[maybe_unused]] void setErrorMessage(const char *pMessage, int32_t ErrorCode,
383382
int32_t AdapterErrorCode);

unified-runtime/source/adapters/native_cpu/common.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,14 @@
1111
#include "common.hpp"
1212

1313
// Global variables for UR_RESULT_ADAPTER_SPECIFIC_ERROR
14-
// See urGetLastResult
15-
thread_local ur_result_t ErrorMessageCode = UR_RESULT_SUCCESS;
14+
thread_local int32_t ErrorMessageCode = 0;
1615
thread_local char ErrorMessage[MaxMessageSize]{};
1716

1817
// Utility function for setting a message and warning
19-
[[maybe_unused]] void setErrorMessage(const char *pMessage,
20-
ur_result_t ErrorCode) {
18+
[[maybe_unused]] void setErrorMessage(const char *pMessage, int32_t ErrorCode) {
2119
assert(strlen(pMessage) < MaxMessageSize);
2220
// Copy at most MaxMessageSize - 1 bytes to ensure the resultant string is
2321
// always null terminated.
2422
strncpy(ErrorMessage, pMessage, MaxMessageSize - 1);
2523
ErrorMessageCode = ErrorCode;
2624
}
27-
28-
ur_result_t urGetLastResult(ur_platform_handle_t, const char **ppMessage) {
29-
*ppMessage = &ErrorMessage[0];
30-
return ErrorMessageCode;
31-
}

unified-runtime/source/adapters/native_cpu/common.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
constexpr size_t MaxMessageSize = 256;
1818

19-
extern thread_local ur_result_t ErrorMessageCode;
19+
extern thread_local int32_t ErrorMessageCode;
2020
extern thread_local char ErrorMessage[MaxMessageSize];
2121

2222
#define DIE_NO_IMPLEMENTATION \

unified-runtime/source/adapters/opencl/common.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@ namespace cl_adapter {
1616
thread_local int32_t ErrorMessageCode = 0;
1717
thread_local char ErrorMessage[MaxMessageSize]{};
1818

19+
[[maybe_unused]] void setErrorMessage(const char *Message, int32_t ErrorCode) {
20+
assert(strlen(Message) < cl_adapter::MaxMessageSize);
21+
// Copy at most MaxMessageSize - 1 bytes to ensure the resultant string is
22+
// always null terminated.
23+
strncpy(cl_adapter::ErrorMessage, Message, MaxMessageSize - 1);
24+
25+
ErrorMessageCode = ErrorCode;
26+
}
27+
1928
} // namespace cl_adapter
2029

2130
ur_result_t mapCLErrorToUR(cl_int Result) {

unified-runtime/source/adapters/opencl/common.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,7 @@ extern thread_local int32_t ErrorMessageCode;
154154
extern thread_local char ErrorMessage[MaxMessageSize];
155155

156156
// Utility function for setting a message and warning
157-
[[maybe_unused]] void setErrorMessage(const char *Message,
158-
ur_result_t ErrorCode);
157+
[[maybe_unused]] void setErrorMessage(const char *Message, int32_t ErrorCode);
159158
} // namespace cl_adapter
160159

161160
namespace cl_ext {

0 commit comments

Comments
 (0)