CpuTimingMetricTask

CpuTimingMetricTask creates a CPU timing Measurement based on data collected by @timeMethod. It reads the raw timing data from the top-level PipelineTask’s metadata, which is identified by the task configuration.

This task always returns a smaller value than lsst.verify.tasks.commonMetrics.TimingMetricTask. If it is much smaller, that may be a sign that the task is running inefficiently, since both metrics are normally run on task methods that don’t perform I/O.

Processing summary

CpuTimingMetricTask searches the metadata for @timeMethod-generated keys corresponding to the method of interest. If it finds matching keys, it stores the elapsed time as a Measurement.

Python API summary

from lsst.verify.tasks.commonMetrics import CpuTimingMetricTask
classCpuTimingMetricTask(**kwargs)

A Task that computes a CPU time using metadata produced by the `lsst.utils.timer.timeMethod` decorator...

attributeconfig

Access configuration fields and retargetable subtasks.

methodrun(metadata)

Compute a measurement from science task metadata...

See also

See the CpuTimingMetricTask API reference for complete details.

Butler datasets

Input datasets

metadata
The metadata of the top-level pipeline task (e.g., CharacterizeImageTask, DiaPipeTask) being instrumented. This connection is usually configured indirectly through the labelName template as "{labelName}_metadata".

Output datasets

measurement
The value of the metric. The dataset type should not be configured directly, but should be set changing the package and metric template variables to the metric’s namespace (package, by convention) and in-package name, respectively. Subclasses that only support one metric should set these variables automatically.

Retargetable subtasks

No subtasks.

Configuration fields

connections

Data type
lsst.pipe.base.config.Connections
Field type
ConfigField
Configurations describing the connections of the PipelineTask to datatypes

metadataDimensions

Default
['detector', 'instrument', 'visit']
Field type
str ListField
Override for the dimensions of the ‘metadata’ input, when instrumenting Tasks that don’t produce one metadata object per visit.

saveLogOutput

Default
True
Field type
bool Field
Flag to enable/disable saving of log output for a task, enabled by default.

saveMetadata

Default
True
Field type
bool Field
Flag to enable/disable metadata saving for a task, enabled by default.

target

Default
None
Field type
str Field
The method to profile, optionally prefixed by one or more tasks in the format of lsst.pipe.base.Task.getFullMetadata().

Examples

from lsst.verify.tasks import CpuTimingMetricTask

config = CpuTimingMetricTask.ConfigClass()
config.connections.labelName = "diaPipe"
config.connections.package = "ap_association"
cofig.connections.metric = "DiaForcedSourceCpuTime"
config.target = "diaPipe:diaForcedSource.run"
task = CpuTimingMetricTask(config=config)

# config.connections provided for benefit of Pipeline
# but since we've defined it we might as well use it
metadata = butler.get(config.connections.metadata)
processCcdTime = task.run(metadata).measurement