OVERVIEW: llvm host machine instruction characteristics measurment and analysis.
USAGE: llvm-exegesis [options]
OPTIONS:
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
llvm-exegesis analysis options:
--analysis-clustering=<value> - the clustering algorithm to use
=dbscan - use DBSCAN/OPTICS algorithm
=naive - one cluster per opcode
--analysis-clustering-epsilon=<number> - epsilon for benchmark point clustering
--analysis-clusters-output-file=<string> -
--analysis-display-unstable-clusters - if there is more than one benchmark for an opcode, said benchmarks may end up not being clustered into the same cluster if the measured performance characteristics are different. by default all such opcodes are filtered out. this flag will instead show only such unstable opcodes
--analysis-inconsistencies-output-file=<string> -
--analysis-inconsistency-epsilon=<number> - epsilon for detection of when the cluster is different from the LLVM schedule profile values
--analysis-numpoints=<uint> - minimum number of points in an analysis cluster (dbscan only)
--analysis-override-benchmark-triple-and-cpu - By default, we analyze the benchmarks for the triple/CPU they were measured for, but if you want to analyze them for some other combination (specified via -mtriple/-mcpu), you can pass this flag.
llvm-exegesis benchmark options:
--analysis-filter=<value> - Filter the benchmarks before analysing them
=all - Keep all benchmarks (default)
=reg-only - Keep only those benchmarks that do *NOT* involve memory
=mem-only - Keep only the benchmarks that *DO* involve memory
--benchmark-phase=<value> - it is possible to stop the benchmarking process after some phase
=prepare-snippet - Only generate the minimal instruction sequence
=prepare-and-assemble-snippet - Same as prepare-snippet, but also dumps an excerpt of the sequence (hex encoded)
=assemble-measured-code - Same as prepare-and-assemble-snippet, but also creates the full sequence that can be dumped to a file using --dump-object-to-disk
=measure - Same as prepare-measured-code, but also runs the measurement (default)
--dump-object-to-disk[=<string>] - dumps the generated benchmark object to disk and prints a message to access it
--execution-mode=<value> - Selects the execution mode to use for running snippets
=inprocess - Executes the snippets within the same process
=subprocess - Spawns a subprocess for each snippet execution, allows for the use of memory annotations
--ignore-invalid-sched-class - ignore instructions that do not define a sched class
--loop-body-size=<uint> - when repeating the instruction snippet by looping over it, duplicate the snippet until the loop body contains at least this many instruction
--max-configs-per-opcode=<uint> - allow to snippet generator to generate at most that many configs
--measurements-print-progress - Produce progress indicator when performing measurements
--num-repetitions=<uint> - number of time to repeat the asm snippet
--opcode-index=<int> - opcode to measure, by index, or -1 to measure all opcodes
--opcode-name=<string> - comma-separated list of opcodes to measure, by name
--repetition-mode=<value> - how to repeat the instruction snippet
=duplicate - Duplicate the snippet
=loop - Loop over the snippet
=min - All of the above and take the minimum of measurements
--result-aggregation-mode=<value> - How to aggregate multi-values result
=min - Keep min reading
=max - Keep max reading
=mean - Compute mean of all readings
=min-variance - Keep readings set with min-variance
--snippets-file=<string> - code snippets to measure
--use-dummy-perf-counters - Do not read real performance counters, use dummy values (for testing)
--x86-disable-upper-sse-registers - Disable XMM8-XMM15 register usage
--x86-lbr-sample-period=<uint> - The sample period (nbranches/sample), used for LBR sampling
llvm-exegesis options:
--benchmarks-file=<string> - File to read (analysis mode) or write (latency/uops/inverse_throughput modes) benchmark results. “-” uses stdin/stdout.
--mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details)
--mode=<value> - the mode to run
=latency - Instruction Latency
=inverse_throughput - Instruction Inverse Throughput
=uops - Uop Decomposition
=analysis - Analysis
--mtriple=<string> - Target triple. See -version for available targets
Options (32)
| Option | Description | Source |
|---|---|---|
--help | - Display available options (--help-hidden for more) | help |
--help-list | - Display list of available options (--help-list-hidden for more) | help |
--version | - Display the version of this program | help |
--analysis-clustering value | - the clustering algorithm to use =dbscan - use DBSCAN/OPTICS algorithm =naive - one cluster per opcode | help |
--analysis-clustering-epsilon number | - epsilon for benchmark point clustering | help |
--analysis-clusters-output-file string | - | help |
--analysis-display-unstable-clusters | - if there is more than one benchmark for an opcode, said benchmarks may end up not being clustered into the same cluster if the measured performance characteristics are different. | help |
--analysis-inconsistencies-output-file string | help | |
--analysis-inconsistency-epsilon number | - epsilon for detection of when the cluster is different from the LLVM schedule profile values | help |
--analysis-numpoints uint | - minimum number of points in an analysis cluster (dbscan only) | help |
--analysis-override-benchmark-triple-and-cpu | - By default, we analyze the benchmarks for the triple/CPU they were measured for, but if you want to analyze them for some other combination (specified via -mtriple/-mcpu), you can pass this flag. | help |
--analysis-filter value | - Filter the benchmarks before analysing them =all - Keep all benchmarks (default) =reg-only - Keep only those benchmarks that do *NOT* involve memory =mem-only - Keep only the benchmarks that *DO*… | help |
--benchmark-phase value | - it is possible to stop the benchmarking process after some phase =prepare-snippet - Only generate the minimal instruction sequence =prepare-and-assemble-snippet - Same as prepare-snippet, but also… | help |
--dump-object-to-disk string | - dumps the generated benchmark object to disk and prints a message to access it | help |
--execution-mode value | - Selects the execution mode to use for running snippets =inprocess - Executes the snippets within the same process =subprocess - Spawns a subprocess for each snippet execution, allows for the use of… | help |
--ignore-invalid-sched-class | - ignore instructions that do not define a sched class | help |
--loop-body-size uint | - when repeating the instruction snippet by looping over it, duplicate the snippet until the loop body contains at least this many instruction | help |
--max-configs-per-opcode uint | - allow to snippet generator to generate at most that many configs | help |
--measurements-print-progress | - Produce progress indicator when performing measurements | help |
--num-repetitions uint | - number of time to repeat the asm snippet | help |
--opcode-index int | - opcode to measure, by index, or -1 to measure all opcodes | help |
--opcode-name string | - comma-separated list of opcodes to measure, by name | help |
--repetition-mode value | - how to repeat the instruction snippet =duplicate - Duplicate the snippet =loop - Loop over the snippet =min - All of the above and take the minimum of measurements | help |
--result-aggregation-mode value | - How to aggregate multi-values result =min - Keep min reading =max - Keep max reading =mean - Compute mean of all readings =min-variance - Keep readings set with min-variance | help |
--snippets-file string | - code snippets to measure | help |
--use-dummy-perf-counters | - Do not read real performance counters, use dummy values (for testing) | help |
--x86-disable-upper-sse-registers | - Disable XMM8-XMM15 register usage | help |
--x86-lbr-sample-period uint | - The sample period (nbranches/sample), used for LBR sampling | help |
--benchmarks-file string | - File to read (analysis mode) or write (latency/uops/inverse_throughput modes) benchmark results. | help |
--mcpu cpu-name | - Target a specific cpu type (-mcpu=help for details) | help |
--mode value | - the mode to run =latency - Instruction Latency =inverse_throughput - Instruction Inverse Throughput =uops - Uop Decomposition =analysis - Analysis | help |
--mtriple string | - Target triple. | help |