HomePhabricator

[llvm-libc] Add memory function benchmarks

Authored by gchatelet on Jan 6 2020, 4:17 AM.

Description

[llvm-libc] Add memory function benchmarks

Summary:
This patch adds a benchmarking infrastructure for llvm-libc memory functions.

In a nutshell, the code can benchmark small and large buffers for the memcpy, memset and memcmp functions.
It also produces graphs of size vs latency by running targets of the form render-libc-{memcpy|memset|memcmp}-benchmark-{small|big}.

The configurations are provided as JSON files and the benchmark also produces a JSON file.
This file is then parsed and rendered as a PNG file via the render.py script (make sure to run pip3 install matplotlib scipy numpy).
The script can take several JSON files as input and will superimpose the curves if they are from the same host.

TODO:

  • The code benchmarks whatever is available on the host but should be configured to benchmark the -to be added- llvm-libc memory functions.
  • Add a README file with instructions and rationale.
  • Produce scores to track the performance of the functions over time to allow for regression detection.

Reviewers: sivachandra, ckennelly

Subscribers: mgorny, MaskRay, libc-commits

Tags: #libc-project

Differential Revision: https://reviews.llvm.org/D72516

Details

Committed
gchateletJan 24 2020, 2:30 AM
Differential Revision
D72516: [llvm-libc] Add memory function benchmarks
Parents
rGb9013351936d: [mlir] Use all_of instead of a manual loop in IntrinsicGen. NFC
Branches
Unknown
Tags
Unknown

Event Timeline

abrachet added inline comments.
/libc/utils/benchmarks/CMakeLists.txt
95

target_link_options is available since CMake 3.13, but the currently specified minimum in llvm/CMakeLists.txt is 3.4.3. Do you think you could use something else?