aboutsummaryrefslogtreecommitdiff
path: root/util/report_timing.cpp
diff options
context:
space:
mode:
authorGil Pitney <gil.pitney@linaro.org>2014-10-28 18:00:42 -0700
committerGil Pitney <gil.pitney@linaro.org>2014-10-28 18:00:42 -0700
commit61b2c94d9e64758e55730be6a3fc9006c171db85 (patch)
treef564f09ebf93ba293dfa225bd374df6f1f37aa01 /util/report_timing.cpp
Initial Commit: Based on TI OpenCL v0.8, originally based on clover.shamrock_v0.8
This is a continuation of the clover OpenCL project: http://people.freedesktop.org/~steckdenis/clover based on the contributions from Texas Instruments for Keystone II DSP device: git.ti.com/opencl and adding contributions from Linaro for ARM CPU-only support. See README.txt for more info, and build instructions. Signed-off-by: Gil Pitney <gil.pitney@linaro.org>
Diffstat (limited to 'util/report_timing.cpp')
-rw-r--r--util/report_timing.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/util/report_timing.cpp b/util/report_timing.cpp
new file mode 100644
index 0000000..1f3e54a
--- /dev/null
+++ b/util/report_timing.cpp
@@ -0,0 +1,90 @@
+/******************************************************************************
+ * Copyright (c) 2013-2014, Texas Instruments Incorporated - http://www.ti.com/
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Texas Instruments Incorporated nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ *****************************************************************************/
+#define __CL_ENABLE_EXCEPTIONS
+#include <CL/cl.hpp>
+#include <iostream>
+#include <fstream>
+#include <cassert>
+
+using namespace cl;
+using namespace std;
+
+/******************************************************************************
+* REPORT_EVENT_TIMING - Given an OpenCL Event, report to stdout the profiling
+* info associated with the event
+******************************************************************************/
+void ocl_event_times(const Event &ev, const char* name)
+{
+ cl_ulong t_que, t_sub, t_strt, t_end;
+
+ ev.getProfilingInfo(CL_PROFILING_COMMAND_QUEUED, &t_que);
+ ev.getProfilingInfo(CL_PROFILING_COMMAND_SUBMIT, &t_sub);
+ ev.getProfilingInfo(CL_PROFILING_COMMAND_START, &t_strt);
+ ev.getProfilingInfo(CL_PROFILING_COMMAND_END, &t_end);
+
+ /*----------------------------------------------------------------------
+ * Normalize the time to microseconds
+ *--------------------------------------------------------------------*/
+ t_que /= 1000; t_sub /= 1000; t_strt /= 1000; t_end /= 1000;
+
+ if (!name) name = "";
+
+ cout<< name << " : Queue to Submit: " << t_sub-t_que << " us" << endl;
+ cout<< name << " : Submit to Start : " << t_strt-t_sub << " us" << endl;
+ cout<< name << " : Start to End : " << t_end-t_strt << " us" << endl;
+ cout<< endl;
+}
+
+void ocl_relative_times(const Event &ev, const char* name, cl_ulong reference)
+{
+ cl_ulong t_que, t_sub, t_strt, t_end;
+
+ ev.getProfilingInfo(CL_PROFILING_COMMAND_QUEUED, &t_que);
+ ev.getProfilingInfo(CL_PROFILING_COMMAND_SUBMIT, &t_sub);
+ ev.getProfilingInfo(CL_PROFILING_COMMAND_START, &t_strt);
+ ev.getProfilingInfo(CL_PROFILING_COMMAND_END, &t_end);
+
+ /*----------------------------------------------------------------------
+ * Normalize the time to microseconds
+ *--------------------------------------------------------------------*/
+ reference /= 1000;
+ t_que /= 1000; t_sub /= 1000; t_strt /= 1000; t_end /= 1000;
+
+ t_que -= reference;
+ t_sub -= reference;
+ t_strt -= reference;
+ t_end -= reference;
+
+ if (!name) name = "";
+
+ cout << name << " "
+ << t_que << " "
+ << t_sub << " "
+ << t_strt << " "
+ << t_end << endl;
+}