JSON format

The JSON document contains a single JSON object containing two object members, info containing general information about the profiled program, and samples with the sampled information.

See an example of profile data exported to a JSON file in Example JSON output.

info object

command_line

Type: String

Command line call used to launch the profiled program. For example,

aprun -N 24 -n 256 -d 1 ./my_exe
machine

Type: String

Hostname of the node on which the executable was launched.

notes

Type: String

A short, optional, user-provided description of the run or other notes on configuration and compilation settings. This is specified by setting the environment variable FORGE_NOTES before running Linaro MAP.

number_of_nodes

Type: Number

Number of nodes run on.

number_of_processes

Type: Number

Number of processes run on.

runtime

Type: Number

Runtime in milliseconds.

start_time

Type: String

Date and time of run in ISO 8601 format.

create_version

Type: String

Version of MAP used to create the .map file.

metrics

Type: Object

Attributes about the overall run, reported once per process, each represented by an object with max, min, mean, var, and sums fields, or null, when the metric is not available.

The sums series contains the sum of the metric across all processes or nodes for each sample.

In many cases, the values over all nodes is the same. This means that the max, min, and mean values are the same, with variance zero. For example, in homogeneous systems, num_cores_per_node is the same over all nodes.

wchar_total

Type: Object

The number of bytes written in total by I/O operation system calls (see wchar in the Linux Programmer’s Manual page ‘proc’: man 5 proc).

rchar_total

Type: Object

The number of bytes read in total by I/O operation system calls (see rchar in the Linux Programmer’s Manual page ‘proc’: man 5 proc).

num_cores_per_node

Type: Object

Number of cores available per node.

memory_per_node

Type: Object

RAM installed per node.

nvidia_gpus_count

Type: Object

Number of NVIDIA GPUs per node.

nvidia_total_memory

Type: Object

NVIDIA GPU frame buffer size per node.

rocm.gpus_count

Type: Object

Number of AMD GPUs per node.

rocm.gpu_total_memory

Type: Object

AMD GPU Video Random Access Memory (VRAM) size per node

num_omp_threads_per_process

Type: Object

Number of OpenMP worker threads used per process.

samples object

count

Type: Number

Number of samples recorded.

window_start_offset

Type: Array of Numbers

Offset of the beginning of each sampling window, starting from zero. The actual sample might have been taken anywhere in between this offset and the start of the next window, that is the window offsets wi and wi+1 define a semi-open set (wi,wi+1) in which the sample was taken.

activity

Type: Object

Contains information about the proportion of different types of activity performed during execution, according to different view modes. The types of view modes possibly shown are Main Thread, OpenMP, and pthreads as described in Main-thread, OpenMP, and Thread view modes. Only available view modes are exported, for example, a program without OpenMP sections will not have an OpenMP activity entry.

Note

The sum of the proportions in an activity might not add up to 1, this can happen when there are fewer threads running than Linaro MAP has expected. Occasionally the sum of the proportions shown for a sample in pthreads or OpenMP threads mode might exceed 1. When this happens, the profiled program uses more cores than Linaro MAP assumes the maximum number of cores per process can be. This can be due to middleware services launching helper threads which, unexpectedly to Linaro MAP, contribute to the activity of the profiled program. In this case, the proportions for that sample should not be compared with the rest of proportions for that activity in the sample set.

metrics

Type: Object

Contains an object for each metric that was recorded. These objects contain four lists each, with the minimum, maximum, average, and variance of that metric in each sample. The format of a metrics entry is given in Metrics. All metrics recorded in a run are present in the JSON, including custom metrics. The names and descriptions of all core Linaro MAP metrics are given in Metrics. It is assumed that a user including a custom metrics library is aware of what the custom metric is reporting. See the Custom Metric Plugin Interface documentation.