Use barrier packets for event profiling

Use barrier packets for every profile marker that gets submitted
and use the completion signal to get GPU ts. This gives most accurate
dispatch time. Club cache flushes with profile marker if there is a
pending dispatch that needs cache flush. This optimization saves on
extra barrier and helps wall time

Change-Id: Ib62d6d7aabf4743827b561be6c9c5afa813203da


[ROCm/clr commit: 59c6cb0268]
This commit is contained in:
Saleel Kudchadker
2020-10-17 10:04:58 -07:00
parent 882c0d99ec
commit 1410f002f3
3 changed files with 106 additions and 16 deletions
+2 -1
View File
@@ -97,7 +97,7 @@ class Event : public RuntimeObject {
static const EventWaitList nullWaitList;
struct ProfilingInfo {
ProfilingInfo(bool enabled = false) : enabled_(enabled), waves_(0) {
ProfilingInfo(bool enabled = false) : enabled_(enabled), waves_(0), marker_ts_(false) {
if (enabled) {
clear();
callback_ = nullptr;
@@ -111,6 +111,7 @@ class Event : public RuntimeObject {
bool enabled_; //!< Profiling enabled for the wave limiter
uint32_t waves_; //!< The number of waves used in a dispatch
ProfilingCallback* callback_;
bool marker_ts_;
void clear() {
queued_ = 0ULL;
submitted_ = 0ULL;