Profiling GPU Code

Module for profiling OpenCL GPU code execution.

class syris.profiling.DummyProfiler

A profiler which does nothing for saving time.

add(event, func_name='')

Does nothing with input arguments.

class syris.profiling.ProfileReconstructor(file_name, str_units)

Profile reconstructor which handles the profiling file created by Profiler.

get_data(attr)

Get data in a dictionary aggregated to a multidictionary. attr is a record attribute which will serve as a key to the top level of result dictionary. Return a dictionary in form {attr: {event_id: Event}}.

class syris.profiling.Profiler(queues, file_name)

An OpenCL GPU code PROFILER.

add(event, func_name='')

Add an OpenCL event and function with name func_name into the PROFILER’s queue.

run()

Run in a separate thread and serve the incoming events.

shutdown()

Wait for all events to finish and then stop the PROFILER loop.

syris.profiling.plot(data, attribute, states, file_units, out_units, start_from=0, stop_at=1.7976931348623157e+308, delta=0.0, only_averages=False)

Plot the profiling information, where

  • data - a dictionary in the form {id: {event_id: values}}

  • attribute - (event_id, device_id, queue_id)

  • states - OpenCL Event states to use as beginning and end

  • file_units - units used in the profiling file

  • out_units - units used for output

  • start_from - plot events started after start_from

  • stop_at - plot events started before stop_at

  • delta - plot only events with duration >= delta

  • only_averages - outputs only the average timings