forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 1
110 lines (100 loc) · 3.71 KB
/
Copy pathlibcxx-benchmark-commit.yml
File metadata and controls
110 lines (100 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# This file defines a workflow that runs the libc++ benchmarks at the given commit.
# This workflow is intended to be triggered manually or via the Github API. As such,
# it requires several inputs that allow customizing its behavior.
name: Benchmark libc++ commit
permissions:
contents: read
on:
# TODO: Support dispatching only to selected configurations.
workflow_dispatch:
inputs:
commit:
description: 'The libc++ commit to benchmark'
required: true
type: string
benchmark-suite-version:
description: 'The version of the benchmark suite to use (a LLVM monorepo SHA)'
required: false
type: string
default: 0eefb2682bf8c04954c46e91916b5164d8424702
filter:
description: 'An optional filter to determine which benchmarks to run'
required: false
type: string
submit-lnt:
description: 'Whether to submit the results to LNT -- dry-run unless opted in'
required: false
type: boolean
default: false
lnt-url:
description: 'The URL of the LNT instance to submit to'
required: false
type: string
default: http://lnt.llvm.org
jobs:
run-benchmarks:
strategy:
matrix:
include:
- lnt-machine: macos-26.5-arm64
runner: ["self-hosted", "macOS", "ARM64", "26", "26.5"]
cxx: clang++
install-python: false
install-macos-dependencies: true
- lnt-machine: linux-x86_64
runner: llvm-premerge-libcxx-runners
cxx: clang++-22
install-python: true
install-macos-dependencies: false
fail-fast: false
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout the LLVM monorepo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# We benchmark arbitrary historical commits, which requires the full history to be available.
fetch-depth: 0
fetch-tags: true
- name: Install Python
if: ${{ matrix.install-python }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.14'
- name: Install Ninja and CMake
if: ${{ matrix.install-macos-dependencies }}
run: |
brew install ninja cmake
- name: Diagnose tools in use
run: |
cmake --version
ninja --version
${{ matrix.cxx }} --version
- name: Run the benchmarks
env:
COMMIT: ${{ inputs.commit }}
BENCHMARK_SUITE_VERSION: ${{ inputs.benchmark-suite-version }}
FILTER: ${{ inputs.filter }}
run: |
filter_arg=()
if [ -n "${FILTER}" ]; then
filter_arg=(--filter "${FILTER}")
fi
libcxx/utils/ci/lnt/run-benchmarks \
--test-suite-commit "${BENCHMARK_SUITE_VERSION}" \
--machine ${{ matrix.lnt-machine }} \
--compiler ${{ matrix.cxx }} \
--benchmark-commit "${COMMIT}" \
"${filter_arg[@]}" \
--output "${COMMIT}.json"
cat "${COMMIT}.json"
- name: Submit to LNT
if: ${{ inputs.submit-lnt }}
env:
COMMIT: ${{ inputs.commit }}
LNT_URL: ${{ inputs.lnt-url }}
run: |
libcxx/utils/ci/lnt/submit-benchmarks \
--lnt-url "${LNT_URL}" \
--test-suite libcxx2 \
"${COMMIT}.json"