generated from feelpp/feelpp-project
-
Notifications
You must be signed in to change notification settings - Fork 0
143 lines (133 loc) · 4.95 KB
/
benchmark.yml
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
name: Benchmark
on:
push:
branches: #TODO: DEBUG - REMOVE
- '**'
repository_dispatch:
types: [execute-benchmark]
workflow_dispatch:
inputs:
machines_config:
description: 'Machine related configurations'
required: True
benchmark_config:
description: 'Applcation related configuration'
required: True
jobs:
activate:
runs-on: self-ubuntu-22.04
if: |
github.repository == 'feelpp/benchmarking' && !startsWith(github.event.head_commit.message, 'Release ')
steps:
- run: echo ok go
build_wheel:
needs: activate
runs-on: self-ubuntu-22.04
name: Build wheel package
if: "!contains(github.event.head_commit.message, 'code skip')"
steps:
- uses: actions/checkout@v4
- name: Build Ktirio Cases wheel
run: |
npm install
npx downdoc README.adoc
pip3 wheel --no-deps --wheel-dir dist .
env:
CXX: clang++
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: wheel-artifacts
path: dist/*.whl
factory:
name: HPC Systems Factory
needs: build_wheel
runs-on: self-ubuntu-22.04
outputs:
matrix: ${{ steps.hpc-systems.outputs.matrix }}
steps:
- name: Download wheel
uses: actions/download-artifact@v4
with:
name: wheel-artifacts
path: dist
- name: Create Virtual Environment
run: |
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
- name: Download machines configuration
run: |
source .venv/bin/activate
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
machine_cfg_id=${{ github.event.inputs.machines_config }};
elif [[ "${{ github.event_name}}" == "repository_dispatch" ]]; then
machine_cfg_id=${{ github.event.client_payload.machines_config }};
else #TODO: REMOVE - DEBUG
machine_cfg_id="6720f5a8b0e95728eb010af5"
fi
girder-download -gid $machine_cfg_id -o ./tmp/ -fn "machines_config.json"
env:
GIRDER_API_KEY: ${{secrets.GIRDER}}
- id: hpc-systems
name: Set HPC systems matrix
run: |
source .venv/bin/activate
matrix=$(hpc-dispatch -mp ./tmp/machines_config.json -o ./tmp/machines/)
echo $matrix
echo "matrix={ include : $matrix }" >> $GITHUB_OUTPUT
- name: Donwload benchmark configuration
run: |
source .venv/bin/activate
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
bench_cfg_id=${{ github.event.inputs.benchmark_config }};
elif [[ "${{ github.event_name}}" == "repository_dispatch" ]]; then
bench_cfg_id=${{ github.event.client_payload.benchmark_config }};
else #TODO: REMOVE - DEBUG
bench_cfg_id="6720f601b0e95728eb010af8"
fi
girder-download -gid $bench_cfg_id -o ./tmp/ -fn "benchmark_config.json"
env:
GIRDER_API_KEY: ${{secrets.GIRDER}}
- name: pull_images
run: |
source .venv/bin/activate
#ONLY IF NEEDED
- name: Upload configs
uses: actions/upload-artifact@v4
with:
name: config-artifacts
path: |
./tmp/benchmark_config.json
./tmp/machines/
benchmark:
needs: factory
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.factory.outputs.matrix) }}
runs-on: ${{matrix.runner}}
timeout-minutes: 7200
name: ${{matrix.machine}}
steps:
- name: Download wheel
uses: actions/download-artifact@v4
with:
name: wheel-artifacts
path: dist
- name: Download configs
uses: actions/download-artifact@v4
with:
name: config-artifacts
path: ./tmp/
- name: Create Virtual Environment
run: |
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
- name: Execute benchmarks
run: |
source .venv/bin/activate
execute-benchmark -ec ${{matrix.machine_cfg}} --config ./tmp/benchmark_config.json -vv
echo $?
env:
GIRDER_API_KEY: ${{secrets.GIRDER}}