aboutsummaryrefslogtreecommitdiff
path: root/src/core/NEON/kernels/arm_gemm/profiler.hpp
diff options
context:
space:
mode:
authorAnthony Barbier <anthony.barbier@arm.com>2018-07-03 16:22:02 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:54:10 +0000
commit5f707736413aeac77818c42838296966f8dc6761 (patch)
treeb829ed3243ea5f3085f288836132416c78bc2e72 /src/core/NEON/kernels/arm_gemm/profiler.hpp
parent7485d5a62685cb745ab50e970adb722cb71557ac (diff)
downloadComputeLibrary-5f707736413aeac77818c42838296966f8dc6761.tar.gz
COMPMID-1369: Revert accidental formatting of RSH's repo
Pulled latest fixes from David's repo: commit f43ebe932c84083332b0b1a0348241b69dda63a7 Author: David Mansell <David.Mansell@arm.com> Date: Tue Jul 3 18:09:01 2018 +0100 Whitespace tidying, fixed comment in gemv_batched imported from ACL. Change-Id: Ie37a623f44e90d88072236cb853ac55ac82d5f51 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/138530 Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com> Reviewed-by: David Mansell <david.mansell@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/arm_gemm/profiler.hpp')
-rw-r--r--src/core/NEON/kernels/arm_gemm/profiler.hpp91
1 files changed, 38 insertions, 53 deletions
diff --git a/src/core/NEON/kernels/arm_gemm/profiler.hpp b/src/core/NEON/kernels/arm_gemm/profiler.hpp
index ada0c95e26..1b944c4ccd 100644
--- a/src/core/NEON/kernels/arm_gemm/profiler.hpp
+++ b/src/core/NEON/kernels/arm_gemm/profiler.hpp
@@ -31,75 +31,65 @@
#include <mutex>
#endif
-namespace arm_gemm
-{
+namespace arm_gemm {
+
#ifndef NO_MULTI_THREADING
extern std::mutex report_mutex;
#endif
-class profiler
-{
+class profiler {
private:
- static const int maxevents = 100000;
- unsigned long times[maxevents] = {};
- unsigned long units[maxevents] = {};
- int events[maxevents] = {};
- int currentevent = 0;
- int countfd = 0;
-
- class ScopedProfilerClass
- {
+ static const int maxevents = 100000;
+ unsigned long times[maxevents] = { };
+ unsigned long units[maxevents] = { };
+ int events[maxevents] = { };
+ int currentevent=0;
+ int countfd=0;
+
+ class ScopedProfilerClass {
private:
profiler &_parent;
- bool legal = false;
+ bool legal=false;
public:
- ScopedProfilerClass(profiler &prof, int i, unsigned long u)
- : _parent(prof)
- {
- if(prof.currentevent == maxevents)
+ ScopedProfilerClass(profiler &prof, int i, unsigned long u) : _parent(prof) {
+ if (prof.currentevent==maxevents)
return;
- prof.events[prof.currentevent] = i;
- prof.units[prof.currentevent] = u;
- legal = true;
+ prof.events[prof.currentevent]=i;
+ prof.units[prof.currentevent]=u;
+ legal=true;
start_counter(prof.countfd);
}
- ~ScopedProfilerClass()
- {
- if(!legal)
- return;
+ ~ScopedProfilerClass() {
+ if (!legal) return;
- long long cycs = stop_counter(_parent.countfd);
+ long long cycs = stop_counter(_parent.countfd);
_parent.times[_parent.currentevent++] = cycs;
}
};
public:
- profiler()
- {
- countfd = open_cycle_counter();
+ profiler() {
+ countfd=open_cycle_counter();
}
- ~profiler()
- {
+ ~profiler() {
close(countfd);
- int tots[5];
+ int tots[5];
unsigned long counts[5];
unsigned long tunits[5];
- const char *descs[] = { "Prepare A", "Prepare B", "Kernel", "Merge" };
+ const char * descs[] = { "Prepare A", "Prepare B", "Kernel", "Merge" };
- for(int i = 1; i < 5; i++)
- {
- tots[i] = 0;
+ for (int i=1; i<5; i++) {
+ tots[i] = 0;
counts[i] = 0;
tunits[i] = 0;
}
- for(int i = 0; i < currentevent; i++)
- {
- // printf("%10s: %ld\n", descs[events[i]-1], times[i]);
+ for (int i=0; i<currentevent; i++) {
+// printf("%10s: %ld\n", descs[events[i]-1], times[i]);
tots[events[i]]++;
counts[events[i]] += times[i];
tunits[events[i]] += units[i];
@@ -113,31 +103,26 @@ public:
#endif
printf("%20s %9s %9s %9s %12s %9s\n", "", "Events", "Total", "Average", "Bytes/MACs", "Per cycle");
- for(int i = 1; i < 5; i++)
- {
- printf("%20s: %9d %9ld %9ld %12lu %9.2f\n", descs[i - 1], tots[i], counts[i], counts[i] / tots[i], tunits[i], (float)tunits[i] / counts[i]);
+ for (int i=1; i<5; i++) {
+ printf("%20s: %9d %9ld %9ld %12lu %9.2f\n",descs[i-1],tots[i],counts[i],counts[i]/tots[i],tunits[i],(float)tunits[i]/counts[i]);
}
}
template <typename T>
- void operator()(int i, unsigned long u, T func)
- {
- if(currentevent == maxevents)
- {
+ void operator() (int i, unsigned long u, T func) {
+ if (currentevent==maxevents) {
func();
- }
- else
- {
+ } else {
events[currentevent] = i;
- units[currentevent] = u;
+ units[currentevent] = u;
start_counter(countfd);
func();
- long long cycs = stop_counter(countfd);
+ long long cycs = stop_counter(countfd);
times[currentevent++] = cycs;
}
}
- ScopedProfilerClass ScopedProfiler(int i, unsigned long u)
- {
+
+ ScopedProfilerClass ScopedProfiler(int i, unsigned long u) {
return ScopedProfilerClass(*this, i, u);
}
};