summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xSConstruct3
-rw-r--r--src/mem/ruby/profiler/Profiler.cc22
2 files changed, 24 insertions, 1 deletions
diff --git a/SConstruct b/SConstruct
index f8eac47e6..8a72419b4 100755
--- a/SConstruct
+++ b/SConstruct
@@ -1502,6 +1502,9 @@ for variant_path in variant_paths:
"target ISA combination"
env['USE_KVM'] = False
+ if env['BUILD_GPU']:
+ env.Append(CPPDEFINES=['BUILD_GPU'])
+
# Warn about missing optional functionality
if env['USE_KVM']:
if not main['HAVE_PERF_ATTR_EXCLUDE_HOST']:
diff --git a/src/mem/ruby/profiler/Profiler.cc b/src/mem/ruby/profiler/Profiler.cc
index 04e8331c4..900714e5d 100644
--- a/src/mem/ruby/profiler/Profiler.cc
+++ b/src/mem/ruby/profiler/Profiler.cc
@@ -56,7 +56,24 @@
#include "mem/protocol/RubyRequest.hh"
#include "mem/ruby/network/Network.hh"
#include "mem/ruby/profiler/AddressProfiler.hh"
+
+/**
+ * the profiler uses GPUCoalescer code even
+ * though the GPUCoalescer is not built for
+ * all ISAs, which can lead to run/link time
+ * errors. here we guard the coalescer code
+ * with ifdefs as there is no easy way to
+ * refactor this code without removing
+ * GPUCoalescer stats from the profiler.
+ *
+ * eventually we should use probe points
+ * here, but until then these ifdefs will
+ * serve.
+ */
+#ifdef BUILD_GPU
#include "mem/ruby/system/GPUCoalescer.hh"
+#endif
+
#include "mem/ruby/system/Sequencer.hh"
using namespace std;
@@ -361,10 +378,12 @@ Profiler::collateStats()
if (seq != NULL) {
m_outstandReqHistSeqr.add(seq->getOutstandReqHist());
}
+#ifdef BUILD_GPU
GPUCoalescer *coal = ctr->getGPUCoalescer();
if (coal != NULL) {
m_outstandReqHistCoalsr.add(coal->getOutstandReqHist());
}
+#endif
}
}
@@ -423,7 +442,7 @@ Profiler::collateStats()
}
}
}
-
+#ifdef BUILD_GPU
GPUCoalescer *coal = ctr->getGPUCoalescer();
if (coal != NULL) {
// add all the latencies
@@ -464,6 +483,7 @@ Profiler::collateStats()
}
}
}
+#endif
}
}
}