Documentation for using MARCS to generate a .mod file for STARDIS (#227) #644
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: benchmarks | |
env: | |
TARDIS_VER: release-2024.08.25 # master | |
on: | |
push: | |
branches: | |
- main | |
pull_request_target: | |
branches: | |
- "*" | |
types: | |
- opened | |
- reopened | |
- synchronize | |
- labeled # benchmarks label required | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash -l {0} | |
jobs: | |
build: | |
if: github.event_name == 'push' || | |
github.event_name == 'workflow_dispatch' || | |
(github.event_name == 'pull_request_target' && | |
contains(github.event.pull_request.labels.*.name, 'benchmarks')) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
if: github.event_name != 'pull_request_target' | |
with: | |
fetch-depth: 0 | |
- name: Checkout pull/${{ github.event.number }} | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
fetch-depth: 0 | |
if: github.event_name == 'pull_request_target' | |
- name: Restore Atom Data | |
uses: actions/cache/restore@v3 | |
id: atom-data-restore | |
with: | |
path: benchmarks/kurucz_cd23_chianti_H_He.h5 | |
key: atom-data | |
- name: Download Atom Data | |
if: steps.atom-data-restore.outputs.cache-hit != 'true' | |
run: | | |
REPO_URL="https://dev.azure.com/tardis-sn/TARDIS/_apis/git/repositories/tardis-refdata" | |
wget -q "$REPO_URL/items?path=atom_data/kurucz_cd23_chianti_H_He.h5&versionType=branch&version=master&resolveLfs=true" -O benchmarks/kurucz_cd23_chianti_H_He.h5 | |
- name: Save Atom Data | |
uses: actions/cache/save@v3 | |
if: ${{ steps.atom-data-restore.outputs.cache-hit != 'true' && always() || false }} | |
id: atom-data-cache-save | |
with: | |
path: benchmarks/kurucz_cd23_chianti_H_He.h5 | |
key: atom-data | |
- name: Install asv | |
run: pip install asv | |
- name: Accept all asv questions | |
run: asv machine --yes | |
- name: Download TARDIS dependencies | |
run: | | |
LOCK_URL="https://github.com/tardis-sn/tardis/raw/${{ env.TARDIS_VER }}/tardis_env3.yml" | |
wget -q "$LOCK_URL" | |
- name: Add TARDIS install command to asv config file | |
run: | | |
TARDIS_INSTALL_CMD="pip install git+https://github.com/tardis-sn/tardis.git" # @${{ env.TARDIS_VER }}" | |
cat <<< $(jq '.build_command |= [$TARDIS_INSTALL_CMD] + .' --arg TARDIS_INSTALL_CMD "${TARDIS_INSTALL_CMD}" asv.conf.json) > asv.conf.json | |
- name: Run benchmarks for last 5 commits if not PR | |
if: github.event_name != 'pull_request_target' | |
run: | | |
git log -n 5 --pretty=format:"%H" >> tag_commits.txt | |
asv run --show-stderr -v HASHFILE:tag_commits.txt | tee asv-output.log | |
if grep -q failed asv-output.log; then | |
echo "Some benchmarks have failed!" | |
exit 1 | |
fi | |
- name: Generate Graphs and HTML | |
if: github.event_name != 'pull_request_target' | |
run: asv publish | |
- name: Delete env files | |
if: github.event_name != 'pull_request_target' | |
run: rm -r .asv/env #Delete env from prev run if not PR | |
- name: Push results to dest repo | |
if: github.event_name != 'pull_request_target' | |
continue-on-error: true | |
uses: cpina/github-action-push-to-another-repository@main | |
env: | |
API_TOKEN_GITHUB: ${{ secrets.BOT_TOKEN }} | |
with: | |
source-directory: ".asv" | |
destination-github-username: "tardis-sn" | |
destination-repository-name: "stardis-benchmarks" | |
user.email: [email protected] | |
target-branch: main | |
target-directory: .asv | |
- name: Compare HEAD with main if PR | |
if: github.event_name == 'pull_request_target' | |
continue-on-error: true # TODO: step failed sporadically while testing | |
run: | | |
asv continuous ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | tee asv-cont-output.log | |
if grep -q failed asv-cont-output.log; then | |
echo "Some benchmarks have errors!" | |
exit 1 | |
fi | |
- name: Compare Master and PR head | |
run: asv compare ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | tee asv-compare-output.log | |
- name: Compare Master and PR head but only show changed results | |
run: asv compare ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} --only-changed | tee asv-compare-changed-output.log | |
- name: asv output 1 | |
id: asv_pr_vs_main | |
uses: juliangruber/[email protected] | |
with: | |
path: asv-compare-output.log | |
- name: asv output 2 | |
id: asv_pr_vs_main_changed | |
uses: juliangruber/[email protected] | |
with: | |
path: asv-compare-changed-output.log | |
- name: Find Comment | |
if: always() && github.event_name == 'pull_request_target' | |
uses: peter-evans/find-comment@v1 | |
id: fc | |
with: | |
issue-number: ${{ github.event.number }} | |
comment-author: "tardis-bot" | |
body-includes: I ran benchmarks as you asked | |
- name: Post comment | |
if: github.event_name == 'pull_request_target' | |
uses: peter-evans/create-or-update-comment@v2 | |
with: | |
token: ${{ secrets.BOT_TOKEN }} | |
issue-number: ${{ github.event.number }} | |
comment-id: ${{ steps.fc.outputs.comment-id }} | |
edit-mode: replace | |
body: | | |
*\*beep\* \*bop\** | |
Hi human, | |
I ran benchmarks as you asked comparing main (${{ github.event.pull_request.base.sha }}) and the latest commit (${{ github.event.pull_request.head.sha }}). | |
Here are the logs produced by ASV. | |
Results can also be downloaded as artifacts [**here**](${{ env.URL }}). | |
Significantly changed benchmarks: | |
<details> | |
```diff | |
${{ steps.asv_pr_vs_main_changed.outputs.content }} | |
``` | |
</details> | |
All benchmarks: | |
<details> | |
```diff | |
${{ steps.asv_pr_vs_main.outputs.content }} | |
``` | |
</details> | |
env: | |
URL: https://github.com/${{ github.repository_owner }}/${{ github.event.repository.name }}/actions/runs/${{ github.run_id }}?check_suite_focus=true | |
- name: Save results artifact | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: asv-benchmark-results-${{ runner.os }} | |
path: | | |
.asv/results | |
asv-cont-output.log | |
asv-compare-output.log | |
asv-compare-changed-output.log |