taucmdr.model.measurement module

Measurement data model.

Measurement completely describes the performance data measurements we wish to perform. It is often the case that we do not wish to gather all the available data in a single run since overhead would be extreme. Different measurements allow us to take different views of the application’s performance.

class taucmdr.model.measurement.Measurement(record)[source]

Bases: taucmdr.mvc.model.Model

Measurement data model.

_check_metrics()[source]

Check for TIME in metrics, add it if missing, ensure it is first

associations = {'projects': (<class 'taucmdr.model.project.Project'>, 'measurements')}
attributes = {'baseline': {'argparse': {'flags': ('--baseline',), 'group': 'instrumentation'}, 'compat': {True: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': False, 'description': 'completely disable all instrumentation and measure wall clock time via the OS', 'type': 'boolean'}, 'callpath': {'argparse': {'const': 100, 'flags': ('--callpath',), 'group': 'data', 'metavar': 'depth', 'nargs': '?'}, 'default': 100, 'description': 'maximum depth for callpath recording', 'type': 'integer'}, 'callsite': {'argparse': {'flags': ('--callsite',)}, 'compat': {True: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': False, 'description': 'record event callsites', 'type': 'boolean'}, 'comm_matrix': {'argparse': {'flags': ('--comm-matrix',)}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'record the point-to-point communication matrix', 'type': 'boolean'}, 'compiler_inst': {'argparse': {'choices': ('always', 'fallback', 'never'), 'const': 'always', 'flags': ('--compiler-inst',), 'group': 'instrumentation', 'metavar': 'mode', 'nargs': '?'}, 'compat': {<function attributes.<locals>.<lambda>>: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': 'never', 'description': 'use compiler-generated callbacks to gather performance data', 'rebuild_required': True, 'type': 'string'}, 'cuda': {'argparse': {'flags': ('--cuda',)}, 'compat': {True: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': False, 'description': 'measure cuda events via the CUPTI interface', 'type': 'boolean'}, 'extra_tau_options': {'argparse': {'flags': ('--extra-tau-options',), 'metavar': '<option>', 'nargs': '+'}, 'compat': {<class 'bool'>: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'description': 'append extra options to TAU_OPTIONS environment variable (not recommended)', 'rebuild_on_change': True, 'type': 'array'}, 'force_tau_options': {'argparse': {'flags': ('--force-tau-options',), 'metavar': '<option>', 'nargs': '+'}, 'compat': {<class 'bool'>: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'description': 'forcibly set the TAU_OPTIONS environment variable (not recommended)', 'rebuild_on_change': True, 'type': 'array'}, 'heap_usage': {'argparse': {'flags': ('--heap-usage',), 'group': 'memory'}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'measure heap memory usage', 'type': 'boolean'}, 'io': {'argparse': {'flags': ('--io',)}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'measure time spent in POSIX I/O calls', 'type': 'boolean'}, 'keep_inst_files': {'argparse': {'flags': ('--keep-inst-files',), 'group': 'instrumentation'}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': "don't remove instrumented files after compilation", 'type': 'boolean'}, 'level_zero': {'argparse': {'flags': ('--level_zero',)}, 'default': False, 'description': 'Level zero ', 'type': 'boolean'}, 'memory_alloc': {'argparse': {'flags': ('--memory-alloc',), 'group': 'memory'}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'record memory allocation/deallocation events and detect leaks', 'type': 'boolean'}, 'metadata_merge': {'argparse': {'flags': ('--metadata-merge',)}, 'default': True, 'description': 'merge metadata of TAU profiles', 'type': 'boolean'}, 'metrics': {'argparse': {'flags': ('--metrics',), 'group': 'data', 'metavar': '<metric>'}, 'compat': {<function attributes.<locals>.<lambda>>: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>), <function attributes.<locals>.<lambda>>: <function Model.construct_condition.<locals>.condition>}, 'default': ['TIME'], 'description': 'a space separated list of performance metrics to gather, e.g. TIME PAPI_FP_INS', 'rebuild_required': True, 'type': 'array'}, 'mpi': {'argparse': {'flags': ('--mpi',)}, 'compat': {True: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': False, 'description': 'use MPI library wrapper to measure time spent in MPI methods', 'rebuild_required': True, 'type': 'boolean'}, 'mpit': {'argparse': {'flags': ('--mpit',)}, 'default': False, 'description': 'MPI-T profiling interface', 'type': 'boolean'}, 'name': {'description': 'measurement configuration name', 'primary_key': True, 'type': 'string', 'unique': True}, 'openacc': {'argparse': {'flags': ('--openacc',)}, 'compat': {True: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': False, 'description': 'use OpeACC library wrapper to measure time spent in OpenACC methods', 'rebuild_required': True, 'type': 'boolean'}, 'opencl': {'argparse': {'flags': ('--opencl',)}, 'compat': {True: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': False, 'description': 'measure OpenCL events', 'type': 'boolean'}, 'openmp': {'argparse': {'choices': ('ignore', 'opari', 'ompt'), 'const': 'ompt', 'flags': ('--openmp',), 'metavar': 'library', 'nargs': '?'}, 'compat': {'ompt': (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>), 'opari': (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': 'ignore', 'description': 'use specified library to measure time spent in OpenMP directives', 'rebuild_required': True, 'type': 'string'}, 'profile': {'argparse': {'choices': ('tau', 'merged', 'cubex', 'sqlite', 'none'), 'const': 'tau', 'flags': ('--profile',), 'group': 'output format', 'metavar': '<format>', 'nargs': '?'}, 'compat': {'cubex': <function Model.construct_condition.<locals>.condition>, 'merged': <function attributes.<locals>._merged_profile_compat>, 'sqlite': <function Model.construct_condition.<locals>.condition>}, 'default': 'tau', 'description': 'generate application profiles', 'rebuild_required': True, 'type': 'string'}, 'projects': {'collection': <class 'taucmdr.model.project.Project'>, 'description': 'projects using this measurement', 'via': 'measurements'}, 'ptts': {'argparse': {'flags': ('--ptts',)}, 'default': False, 'description': 'enable support for PTTS', 'type': 'boolean'}, 'ptts_post': {'argparse': {'flags': ('--ptts-post',)}, 'compat': {<class 'bool'>: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'skip application sampling and post-process existing PTTS sample files', 'type': 'boolean'}, 'ptts_report_flags': {'argparse': {'flags': ('--ptts-report-flags',)}, 'compat': {<class 'bool'>: <function Model.construct_condition.<locals>.condition>}, 'default': '', 'description': 'flags to pass to PTTS report_ts command', 'type': 'string'}, 'ptts_restart': {'argparse': {'flags': ('--ptts-restart',)}, 'compat': {<class 'bool'>: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'enable restart support within PTTS, allowing application to continuerunning and be reinstrumented after stop', 'type': 'boolean'}, 'ptts_sample_flags': {'argparse': {'flags': ('--ptts-sample-flags',), 'metavar': 'sample_flags'}, 'compat': {<class 'bool'>: <function Model.construct_condition.<locals>.condition>}, 'default': '', 'description': 'flags to pass to PTTS sample_ts command', 'type': 'string'}, 'ptts_start': {'argparse': {'flags': ('--ptts-start',)}, 'compat': {<class 'bool'>: <function Model.construct_condition.<locals>.condition>}, 'default': '', 'description': 'address at which to start a PTTS sampling region', 'type': 'string'}, 'ptts_stop': {'argparse': {'flags': ('--ptts-stop',)}, 'compat': {<class 'bool'>: <function Model.construct_condition.<locals>.condition>}, 'default': '', 'description': 'address at which to stop a PTTS sampling region', 'type': 'string'}, 'reuse_inst_files': {'argparse': {'flags': ('--reuse-inst-files',), 'group': 'instrumentation'}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'reuse and preserve instrumented files after compilation', 'type': 'boolean'}, 'sample': {'argparse': {'flags': ('--sample',), 'group': 'instrumentation'}, 'compat': {True: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': True, 'description': 'use event-based sampling to gather performance data', 'type': 'boolean'}, 'sample_resolution': {'argparse': {'choices': ('file', 'function', 'line'), 'flags': ('--sample-resolution',), 'metavar': 'file/function/line', 'nargs': '?'}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': 'line', 'description': 'sample resolution', 'type': 'string'}, 'sampling_period': {'argparse': {'const': 5000, 'flags': ('--sampling-period',), 'metavar': 'us', 'nargs': '?'}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': 5000, 'description': 'default sampling period in microseconds', 'type': 'integer'}, 'select_file': {'argparse': {'flags': ('--select-file',), 'metavar': 'path'}, 'compat': {<class 'bool'>: (<function attributes.<locals>._ensure_instrumented>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'description': 'specify selective instrumentation file', 'rebuild_required': True, 'type': 'string'}, 'shmem': {'argparse': {'flags': ('--shmem',)}, 'compat': {True: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': False, 'description': 'use SHMEM library wrapper to measure time spent in SHMEM methods', 'rebuild_required': True, 'type': 'boolean'}, 'source_inst': {'argparse': {'choices': ('automatic', 'manual', 'never'), 'const': 'automatic', 'flags': ('--source-inst',), 'group': 'instrumentation', 'metavar': 'mode', 'nargs': '?'}, 'compat': {<function attributes.<locals>.<lambda>>: (<function Model.construct_condition.<locals>.condition>, <function Model.construct_condition.<locals>.condition>)}, 'default': 'never', 'description': 'use hooks inserted into the application source code to gather performance data', 'rebuild_required': True, 'type': 'string'}, 'system_load': {'argparse': {'flags': ('--system-load',), 'group': 'data'}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'measure system load', 'type': 'boolean'}, 'tag': {'argparse': {'flags': ('--tag',), 'metavar': '<tags>', 'nargs': '+'}, 'default': '', 'description': 'Narrow search for tags', 'type': 'string'}, 'throttle': {'argparse': {'flags': ('--throttle',)}, 'default': True, 'description': 'throttle lightweight events to reduce overhead', 'type': 'boolean'}, 'throttle_num_calls': {'argparse': {'const': 100000, 'flags': ('--throttle-num-calls',), 'metavar': 'count', 'nargs': '?'}, 'default': 100000, 'description': 'lightweight event call count threshold', 'type': 'integer'}, 'throttle_per_call': {'argparse': {'const': 10, 'flags': ('--throttle-per-call',), 'metavar': 'us', 'nargs': '?'}, 'default': 10, 'description': 'lightweight event duration threshold in microseconds', 'type': 'integer'}, 'trace': {'argparse': {'choices': ('slog2', 'otf2', 'none'), 'const': 'otf2', 'flags': ('--trace',), 'group': 'output format', 'metavar': '<format>', 'nargs': '?'}, 'compat': {'otf2': <function Model.construct_condition.<locals>.condition>, <function attributes.<locals>.<lambda>>: <function attributes.<locals>._discourage_callpath>}, 'default': 'none', 'description': 'generate application traces', 'rebuild_required': True, 'type': 'string'}, 'track_memory_footprint': {'argparse': {'flags': ('--track-memory-footprint',), 'group': 'memory'}, 'compat': {True: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'track memory footprint', 'type': 'boolean'}, 'unwind_depth': {'argparse': {'const': 10, 'flags': ('--unwind-depth',), 'group': 'data', 'metavar': 'depth', 'nargs': '?'}, 'compat': {<function attributes.<locals>.<lambda>>: <function Model.construct_condition.<locals>.condition>}, 'default': 0, 'description': 'Record callstack to specified depth', 'type': 'integer'}, 'update_nightly': {'argparse': {'flags': ('--update-nightly',)}, 'compat': {<class 'bool'>: <function Model.construct_condition.<locals>.condition>}, 'default': False, 'description': 'Download newest TAU nightly', 'type': 'boolean'}}
is_selected()[source]

Returns True if this target configuration is part of the selected experiment, False otherwise.

key_attribute = 'name'
name = 'Measurement'
on_create()[source]

Callback to be invoked after a new data record is created.

on_update(changes)[source]

Callback to be invoked after a data record is updated.

references = {(<class 'taucmdr.model.experiment.Experiment'>, 'measurement')}
class taucmdr.model.measurement.MeasurementController(model_cls, storage, context=None)[source]

Bases: taucmdr.mvc.controller.Controller

Measurement data controller.

delete(keys, context=True)[source]

Delete recorded data and update associations.

The behavior depends on the type of keys:
  • Record.ElementIdentifier: delete the record with that element identifier.
  • dict: delete all records with attributes matching keys.
  • list or tuple: delete all records matching the elements of keys.
  • bool(keys) == False: raise ValueError.

Invokes the on_delete callback after the data is deleted. If this callback raises an exception then the operation is reverted.

Parameters:
  • keys (dict) – Attributes to match.
  • keys – Fields or element identifiers to match.
taucmdr.model.measurement.attributes()[source]

Construct attributes dictionary for the measurement model.

We build the attributes in a function so that classes like taucmdr.module.project.Project are fully initialized and usable in the returned dictionary.

Returns:Attributes dictionary.
Return type:dict