-
Notifications
You must be signed in to change notification settings - Fork 787
[SYCL][ABI-break] Add code_location parameter to the rest of sycl::queue methods #9603
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
2645671
9709f35
4518d93
1f7851c
17fdbd0
1e557c6
20d51d3
1cb201d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -480,11 +480,15 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// trivially copyable. | ||
/// \param Count is the number of times to fill Pattern into Ptr. | ||
/// \return an event representing fill operation. | ||
template <typename T> event fill(void *Ptr, const T &Pattern, size_t Count) { | ||
// TODO: to add code location as parameter when ABI break is permitted | ||
const detail::code_location CodeLoc("sycl/queue.hpp", "fill", 0, 0); | ||
return submit([&](handler &CGH) { CGH.fill<T>(Ptr, Pattern, Count); }, | ||
CodeLoc); | ||
template <typename T> | ||
event fill(void *Ptr, const T &Pattern, | ||
size_t Count _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
|
||
return submit([&](handler &CGH) { | ||
CGH.fill<T>(Ptr, Pattern, Count); | ||
} _CODELOCFW(CodeLoc)); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
|
||
/// Fills the specified memory with the specified pattern. | ||
|
@@ -496,11 +500,14 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param DepEvent is an event that specifies the kernel dependencies. | ||
/// \return an event representing fill operation. | ||
template <typename T> | ||
event fill(void *Ptr, const T &Pattern, size_t Count, event DepEvent) { | ||
event fill(void *Ptr, const T &Pattern, size_t Count, | ||
event DepEvent _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return submit([&](handler &CGH) { | ||
CGH.depends_on(DepEvent); | ||
CGH.fill<T>(Ptr, Pattern, Count); | ||
}); | ||
} _CODELOCFW(CodeLoc)); | ||
} | ||
|
||
/// Fills the specified memory with the specified pattern. | ||
|
@@ -514,11 +521,13 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \return an event representing fill operation. | ||
template <typename T> | ||
event fill(void *Ptr, const T &Pattern, size_t Count, | ||
const std::vector<event> &DepEvents) { | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return submit([&](handler &CGH) { | ||
CGH.depends_on(DepEvents); | ||
CGH.fill<T>(Ptr, Pattern, Count); | ||
}); | ||
} _CODELOCFW(CodeLoc)); | ||
} | ||
|
||
/// Fills the memory pointed by a USM pointer with the value specified. | ||
|
@@ -530,7 +539,7 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Value is a value to be set. Value is cast as an unsigned char. | ||
/// \param Count is a number of bytes to fill. | ||
/// \return an event representing fill operation. | ||
event memset(void *Ptr, int Value, size_t Count); | ||
event memset(void *Ptr, int Value, size_t Count _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Fills the memory pointed by a USM pointer with the value specified. | ||
/// No operations is done if \param Count is zero. An exception is thrown | ||
|
@@ -542,7 +551,8 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Count is a number of bytes to fill. | ||
/// \param DepEvent is an event that specifies the kernel dependencies. | ||
/// \return an event representing fill operation. | ||
event memset(void *Ptr, int Value, size_t Count, event DepEvent); | ||
event memset(void *Ptr, int Value, size_t Count, | ||
event DepEvent _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Fills the memory pointed by a USM pointer with the value specified. | ||
/// No operations is done if \param Count is zero. An exception is thrown | ||
|
@@ -556,7 +566,7 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// dependencies. | ||
/// \return an event representing fill operation. | ||
event memset(void *Ptr, int Value, size_t Count, | ||
const std::vector<event> &DepEvents); | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Copies data from one memory region to another, each is either a host | ||
/// pointer or a pointer within USM allocation accessible on the device | ||
|
@@ -569,7 +579,8 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Src is a USM pointer to the source memory. | ||
/// \param Count is a number of bytes to copy. | ||
/// \return an event representing copy operation. | ||
event memcpy(void *Dest, const void *Src, size_t Count); | ||
event memcpy(void *Dest, const void *Src, | ||
size_t Count _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Copies data from one memory region to another, each is either a host | ||
/// pointer or a pointer within USM allocation accessible on the device | ||
|
@@ -583,7 +594,8 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Count is a number of bytes to copy. | ||
/// \param DepEvent is an event that specifies the kernel dependencies. | ||
/// \return an event representing copy operation. | ||
event memcpy(void *Dest, const void *Src, size_t Count, event DepEvent); | ||
event memcpy(void *Dest, const void *Src, size_t Count, | ||
event DepEvent _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Copies data from one memory region to another, each is either a host | ||
/// pointer or a pointer within USM allocation accessible on the device | ||
|
@@ -599,7 +611,7 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// dependencies. | ||
/// \return an event representing copy operation. | ||
event memcpy(void *Dest, const void *Src, size_t Count, | ||
const std::vector<event> &DepEvents); | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Copies data from one memory region to another, each is either a host | ||
/// pointer or a pointer within USM allocation accessible on the device | ||
|
@@ -670,7 +682,8 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Advice is a device-defined advice for the specified allocation. | ||
/// \return an event representing advice operation. | ||
__SYCL2020_DEPRECATED("use the overload with int Advice instead") | ||
event mem_advise(const void *Ptr, size_t Length, pi_mem_advice Advice); | ||
event mem_advise(const void *Ptr, size_t Length, | ||
pi_mem_advice Advice _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Provides additional information to the underlying runtime about how | ||
/// different allocations are used. | ||
|
@@ -679,7 +692,8 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Length is a number of bytes in the allocation. | ||
/// \param Advice is a device-defined advice for the specified allocation. | ||
/// \return an event representing advice operation. | ||
event mem_advise(const void *Ptr, size_t Length, int Advice); | ||
event mem_advise(const void *Ptr, size_t Length, | ||
int Advice _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Provides additional information to the underlying runtime about how | ||
/// different allocations are used. | ||
|
@@ -689,7 +703,8 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Advice is a device-defined advice for the specified allocation. | ||
/// \param DepEvent is an event that specifies the kernel dependencies. | ||
/// \return an event representing advice operation. | ||
event mem_advise(const void *Ptr, size_t Length, int Advice, event DepEvent); | ||
event mem_advise(const void *Ptr, size_t Length, int Advice, | ||
event DepEvent _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Provides additional information to the underlying runtime about how | ||
/// different allocations are used. | ||
|
@@ -701,7 +716,7 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// dependencies. | ||
/// \return an event representing advice operation. | ||
event mem_advise(const void *Ptr, size_t Length, int Advice, | ||
const std::vector<event> &DepEvents); | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)); | ||
|
||
/// Provides hints to the runtime library that data should be made available | ||
/// on a device earlier than Unified Shared Memory would normally require it | ||
|
@@ -710,10 +725,11 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Ptr is a USM pointer to the memory to be prefetched to the device. | ||
/// \param Count is a number of bytes to be prefetched. | ||
/// \return an event representing prefetch operation. | ||
event prefetch(const void *Ptr, size_t Count) { | ||
// TODO: to add code location as parameter when ABI break is permitted | ||
const detail::code_location CodeLoc("sycl/queue.hpp", "prefetch", 0, 0); | ||
return submit([=](handler &CGH) { CGH.prefetch(Ptr, Count); }, CodeLoc); | ||
event prefetch(const void *Ptr, size_t Count _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return submit( | ||
[=](handler &CGH) { CGH.prefetch(Ptr, Count); } _CODELOCFW(CodeLoc)); | ||
} | ||
|
||
/// Provides hints to the runtime library that data should be made available | ||
|
@@ -724,11 +740,14 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// \param Count is a number of bytes to be prefetched. | ||
/// \param DepEvent is an event that specifies the kernel dependencies. | ||
/// \return an event representing prefetch operation. | ||
event prefetch(const void *Ptr, size_t Count, event DepEvent) { | ||
event prefetch(const void *Ptr, size_t Count, | ||
event DepEvent _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return submit([=](handler &CGH) { | ||
CGH.depends_on(DepEvent); | ||
CGH.prefetch(Ptr, Count); | ||
}); | ||
} _CODELOCFW(CodeLoc)); | ||
} | ||
|
||
/// Provides hints to the runtime library that data should be made available | ||
|
@@ -741,11 +760,13 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
/// dependencies. | ||
/// \return an event representing prefetch operation. | ||
event prefetch(const void *Ptr, size_t Count, | ||
const std::vector<event> &DepEvents) { | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return submit([=](handler &CGH) { | ||
CGH.depends_on(DepEvents); | ||
CGH.prefetch(Ptr, Count); | ||
}); | ||
} _CODELOCFW(CodeLoc)); | ||
} | ||
|
||
/// Copies data from one 2D memory region to another, both pointed by | ||
|
@@ -1085,7 +1106,9 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
template <typename T, typename PropertyListT> | ||
event memcpy(ext::oneapi::experimental::device_global<T, PropertyListT> &Dest, | ||
const void *Src, size_t NumBytes, size_t Offset, | ||
const std::vector<event> &DepEvents) { | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. While this CodeLoc is placed in TLS, it is not being accessed and used in memcpyToDeviceGLobal. Shouldn't we be having a notification in this function? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @tovinkere this PR is not intended to any any extra instrumentation for XPTI. IT is needed to add code_location in API while we have a chance to do that. Any implementation gaps in terms of xpti notifications are not intended to be included here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @KseniyaTikhomirova So, this PR is just ensure CodeLoc is added as a parameter and in the process break ABI during the ABI Breakage window? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if (sizeof(T) < Offset + NumBytes) | ||
throw sycl::exception(make_error_code(errc::invalid), | ||
"Copy to device_global is out of bounds."); | ||
|
@@ -1096,7 +1119,7 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
return submit([&](handler &CGH) { | ||
CGH.depends_on(DepEvents); | ||
return CGH.memcpy(Dest, Src, NumBytes, Offset); | ||
}); | ||
} _CODELOCFW(CodeLoc)); | ||
} | ||
|
||
constexpr bool IsDeviceImageScoped = PropertyListT::template has_property< | ||
|
@@ -1120,7 +1143,9 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
template <typename T, typename PropertyListT> | ||
event memcpy(ext::oneapi::experimental::device_global<T, PropertyListT> &Dest, | ||
const void *Src, size_t NumBytes, size_t Offset, | ||
event DepEvent) { | ||
event DepEvent _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, NumBytes, Offset, | ||
std::vector<event>{DepEvent}); | ||
} | ||
|
@@ -1138,7 +1163,9 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
template <typename T, typename PropertyListT> | ||
event memcpy(ext::oneapi::experimental::device_global<T, PropertyListT> &Dest, | ||
const void *Src, size_t NumBytes = sizeof(T), | ||
size_t Offset = 0) { | ||
size_t Offset = 0 _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, NumBytes, Offset, std::vector<event>{}); | ||
} | ||
|
||
|
@@ -1158,7 +1185,10 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
event | ||
memcpy(void *Dest, | ||
const ext::oneapi::experimental::device_global<T, PropertyListT> &Src, | ||
size_t NumBytes, size_t Offset, const std::vector<event> &DepEvents) { | ||
size_t NumBytes, size_t Offset, | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if (sizeof(T) < Offset + NumBytes) | ||
throw sycl::exception(make_error_code(errc::invalid), | ||
"Copy from device_global is out of bounds."); | ||
|
@@ -1194,7 +1224,10 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
event | ||
memcpy(void *Dest, | ||
const ext::oneapi::experimental::device_global<T, PropertyListT> &Src, | ||
size_t NumBytes, size_t Offset, event DepEvent) { | ||
size_t NumBytes, size_t Offset, | ||
event DepEvent _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, NumBytes, Offset, | ||
std::vector<event>{DepEvent}); | ||
} | ||
|
@@ -1213,7 +1246,10 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
event | ||
memcpy(void *Dest, | ||
const ext::oneapi::experimental::device_global<T, PropertyListT> &Src, | ||
size_t NumBytes = sizeof(T), size_t Offset = 0) { | ||
size_t NumBytes = sizeof(T), | ||
size_t Offset = 0 _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, NumBytes, Offset, std::vector<event>{}); | ||
} | ||
|
||
|
@@ -1234,7 +1270,9 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
event copy(const std::remove_all_extents_t<T> *Src, | ||
ext::oneapi::experimental::device_global<T, PropertyListT> &Dest, | ||
size_t Count, size_t StartIndex, | ||
const std::vector<event> &DepEvents) { | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, Count * sizeof(std::remove_all_extents_t<T>), | ||
StartIndex * sizeof(std::remove_all_extents_t<T>), | ||
DepEvents); | ||
|
@@ -1256,7 +1294,10 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
template <typename T, typename PropertyListT> | ||
event copy(const std::remove_all_extents_t<T> *Src, | ||
ext::oneapi::experimental::device_global<T, PropertyListT> &Dest, | ||
size_t Count, size_t StartIndex, event DepEvent) { | ||
size_t Count, size_t StartIndex, | ||
event DepEvent _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, Count * sizeof(std::remove_all_extents_t<T>), | ||
StartIndex * sizeof(std::remove_all_extents_t<T>), | ||
DepEvent); | ||
|
@@ -1277,7 +1318,9 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
event copy(const std::remove_all_extents_t<T> *Src, | ||
ext::oneapi::experimental::device_global<T, PropertyListT> &Dest, | ||
size_t Count = sizeof(T) / sizeof(std::remove_all_extents_t<T>), | ||
size_t StartIndex = 0) { | ||
size_t StartIndex = 0 _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, Count * sizeof(std::remove_all_extents_t<T>), | ||
StartIndex * sizeof(std::remove_all_extents_t<T>)); | ||
} | ||
|
@@ -1299,7 +1342,9 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
event | ||
copy(const ext::oneapi::experimental::device_global<T, PropertyListT> &Src, | ||
std::remove_all_extents_t<T> *Dest, size_t Count, size_t StartIndex, | ||
const std::vector<event> &DepEvents) { | ||
const std::vector<event> &DepEvents _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, Count * sizeof(std::remove_all_extents_t<T>), | ||
StartIndex * sizeof(std::remove_all_extents_t<T>), | ||
DepEvents); | ||
|
@@ -1322,7 +1367,9 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
event | ||
copy(const ext::oneapi::experimental::device_global<T, PropertyListT> &Src, | ||
std::remove_all_extents_t<T> *Dest, size_t Count, size_t StartIndex, | ||
event DepEvent) { | ||
event DepEvent _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, Count * sizeof(std::remove_all_extents_t<T>), | ||
StartIndex * sizeof(std::remove_all_extents_t<T>), | ||
DepEvent); | ||
|
@@ -1344,7 +1391,9 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase<queue> { | |
copy(const ext::oneapi::experimental::device_global<T, PropertyListT> &Src, | ||
std::remove_all_extents_t<T> *Dest, | ||
size_t Count = sizeof(T) / sizeof(std::remove_all_extents_t<T>), | ||
size_t StartIndex = 0) { | ||
size_t StartIndex = 0 _CODELOCPARAM(&CodeLoc)) { | ||
_CODELOCARG(&CodeLoc); | ||
detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return this->memcpy(Dest, Src, Count * sizeof(std::remove_all_extents_t<T>), | ||
StartIndex * sizeof(std::remove_all_extents_t<T>)); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_CODELOCPARAM(&CodeLoc) must be paired with:
_CODELOCARG(&CodeLoc); between line 485 & 486:
If DISABLE_SYCL_INSTRUMENTATION_METADATA is enabled, then the code will not compile due to undefined variable. See proper use in other constructs such as submit