From 11bc43739d14e66a94f774d7482d8fc28c8ebdf1 Mon Sep 17 00:00:00 2001 From: Iron Prando da Silva Date: Tue, 11 Jan 2022 11:36:48 +0100 Subject: [PATCH] Added InterRank variable for skip checking when phases are within the same rank. --- .../dramtimedependenciesIF.h | 11 +++++++++- .../phasedependenciestracker.cpp | 20 ++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/dramtimedependenciesIF.h b/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/dramtimedependenciesIF.h index 4562504c..ef2ff05b 100644 --- a/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/dramtimedependenciesIF.h +++ b/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/dramtimedependenciesIF.h @@ -47,11 +47,20 @@ #include "data/tracedb.h" #include "businessObjects/phases/phasedependency.h" -struct TimeDependency { +class TimeDependency { +public: + TimeDependency() = default; + TimeDependency(size_t timeValue, QString phaseDep, DependencyType depType, + QString timeDepName, bool considerIntraRank = false) + : timeValue{timeValue}, phaseDep{phaseDep}, depType{depType}, + timeDepName{timeDepName}, considerIntraRank{considerIntraRank} {} + size_t timeValue; QString phaseDep; DependencyType depType; QString timeDepName; + bool considerIntraRank = false; // Used only for InterRank skip check in PhaseDependenciesTracker::mCalculateDependencies + }; struct PhaseTimeDependencies { diff --git a/DRAMSys/traceAnalyzer/businessObjects/phasedependenciestracker.cpp b/DRAMSys/traceAnalyzer/businessObjects/phasedependenciestracker.cpp index 2180549f..dba1523d 100644 --- a/DRAMSys/traceAnalyzer/businessObjects/phasedependenciestracker.cpp +++ b/DRAMSys/traceAnalyzer/businessObjects/phasedependenciestracker.cpp @@ -220,11 +220,21 @@ PhaseDependenciesTracker::mCalculateDependencies(const TraceDB& tdb, const std:: for (const auto& dep : deps.dependencies) { if (dep.phaseDep != "NAW" && dep.phaseDep != otherPhase->phaseName) continue; - if ( - dep.depType == DependencyType::IntraBank && cmdBank != otherPhase->tBank - || dep.depType == DependencyType::IntraRank && cmdRank != otherPhase->tRank - || dep.depType == DependencyType::InterRank && cmdRank == otherPhase->tRank // TODO - is this last comparison correct? Check if this holds on all devices - ) { + bool const skipOnIntraBankAndDifferentBanks = { + dep.depType == DependencyType::IntraBank + && cmdBank != otherPhase->tBank + }; + bool const skipOnIntraRankAndDifferentRanks = { + dep.depType == DependencyType::IntraRank + && cmdRank != otherPhase->tRank + }; + bool const skipOnInterRankAndSameRank = { + dep.depType == DependencyType::InterRank + && cmdRank == otherPhase->tRank + && !dep.considerIntraRank + }; + + if (skipOnIntraBankAndDifferentBanks || skipOnIntraRankAndDifferentRanks || skipOnInterRankAndSameRank) { continue; }