3. Python examples

You can use the PopVision tracing API in Python. See the example below.

In order to start with the tracing API you need to import the libpvti library:

import libpvti

You can create your own trace channel:

def create_trace_channel():
  channel = pvti.createTraceChannel("Trace Channel")
  return channel

You can create events in your newly created channel or you can use one of default channels:

def create_trace_events():
  channel = pvti.createTraceChannel("Trace Channel")
  pvti.Tracepoint.begin(channel, "My begin event") 
  pvti.Tracepoint.event(pvti.traceDrivers, "My event") 
  pvti.Tracepoint.end(pvti.tracePoplar, "My end event") 

You can associate JSON metadata with the events:

def create_trace_events_with_metadata():
  j = '{"Temperature": 90.0}'
  m = pvti.createJsonMetadata(j)
  pvti.Tracepoint.begin(pvti.traceDrivers, "Sensor reading", m)

You can use high level json library to conveniently generate JSON objects:

def create_trace_events_with_metadata2():
  import json
  j = {}
  j["Temperature"] = 90
  j["Unit"] = "Celsius"
  m = pvti.createJsonMetadata(json.dumps(j))
  pvti.Tracepoint.begin(pvti.traceDrivers, "Sensor reading 2", m)

You can create graphs and data series to record performance metrics. Series can be enabled or disabled during runtime:

def create_graphs_and_data_series():
  graph = pvti.Graph("Utilisation", "%")
  ipu1 = graph.addSeries("IPU 1")
  ipu2 = graph.addSeries("IPU 2")
  ipu1.add(10)
  ipu2.disable()
  ipu2.add(50)
  ipu2.enable()
  ipu2.add(70)

The PopVision tutorials Instrumenting applications and Reading PVTI files with libpva contain more information about using the libpvti Python module.