Skip to content

clang test

clang test #3

# SPDX-License-Identifier: Apache-2.0
name: bench-ec2-reusable
on:
workflow_call:
inputs:
name:
type: string
description: Alternative name of instance
default: Graviton2
ec2_instance_type:
type: string
description: Type if EC2 instance to benchmark on
default: t4g.small
ec2_ami:
type: string
description: Textual description of AMI
default: ubuntu-latest (aarch64)
ec2_ami_id:
type: string
description: AMI ID
default: ami-096ea6a12ea24a797
cflags:
type: string
description: Custom CFLAGS for compilation
default: ""
archflags:
type: string
description: Custom ARCH flags for compilation
default: -mcpu=neoverse-n1 -march=armv8.2-a
opt:
type: boolean
description: Runs with optimized code if enabled.
default: true
store_results:
type: boolean
description: Indicates if results should be pushed to github pages
default: false
verbose:
description: Determine for the log verbosity
type: boolean
default: false
bench_extra_args:
type: string
description: Additional command line to be appended to `bench` script
default: ''
cross_prefix:
type: string
description: "Binary prefix for cross-compilation builds"
default: ''
env:
AWS_ROLE: arn:aws:iam::559050233797:role/mlkem-c-aarch64-gh-action
AWS_REGION: us-east-1
AMI_UBUNTU_LATEST_X86_64: ami-0e86e20dae9224db8
AMI_UBUNTU_LATEST_AARCH64: ami-096ea6a12ea24a797
jobs:
start-ec2-runner:
name: Start ${{ inputs.name }} (${{ inputs.ec2_instance_type }})
permissions:
contents: 'read'
id-token: 'write'
runs-on: ubuntu-latest
outputs:
label: ${{ steps.start-ec2-runner.outputs.label }}
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }}
steps:
- uses: actions/checkout@v4
- name: Determine AMI ID
id: det_ami_id
run: |
if [[ "${{ inputs.ec2_ami }}" == "ubuntu-latest (x86_64)" ]]; then
AMI_ID=${{ env.AMI_UBUNTU_LATEST_X86_64 }}
elif [[ "${{ inputs.ec2_ami }}" == "ubuntu-latest (aarch64)" ]]; then
AMI_ID=${{ env.AMI_UBUNTU_LATEST_AARCH64 }}
elif [[ "${{ inputs.ec2_ami }}" == "ubuntu-latest (custom AMI)" ]]; then
AMI_ID=${{ inputs.ec2_ami_id }}
fi
echo "Using AMI ID: $AMI_ID"
echo "AMI_ID=$AMI_ID" >> $GITHUB_OUTPUT
- name: Clear nix-installer action cache
uses: ./.github/actions/clear-cache
with:
key_prefix: determinatesystem-nix-installer-
repository: ${{ github.repository }}
gh_token: ${{ secrets.AWS_GITHUB_TOKEN }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_ROLE }}
aws-region: ${{ env.AWS_REGION }}
- name: Start EC2 runner
id: start-ec2-runner
uses: machulav/ec2-github-runner@v2
with:
mode: start
github-token: ${{ secrets.AWS_GITHUB_TOKEN }}
ec2-image-id: ${{ steps.det_ami_id.outputs.AMI_ID }}
ec2-instance-type: ${{ inputs.ec2_instance_type }}
subnet-id: subnet-07b2729e5e065962f
security-group-id: sg-0ab2e297196c8c381
# bench_nix:
# name: Bench nix ${{ inputs.name }}
# runs-on: ${{ needs.start-ec2-runner.outputs.label }}
# needs: start-ec2-runner # required to start the main job when the runner is ready
# steps:
# - uses: actions/checkout@v4
# - uses: ./.github/actions/bench
# with:
# nix-shell: bench
# nix-cache: false
# nix-verbose: ${{ inputs.verbose }}
# name: ${{ inputs.name }}
# cflags: ${{ inputs.cflags }}
# archflags: ${{ inputs.archflags }}
# opt: ${{ inputs.opt }}
# perf: PERF
# store_results: ${{ inputs.store_results }}
# bench_extra_args: ${{ inputs.bench_extra_args }}
# gh_token: ${{ secrets.AWS_GITHUB_TOKEN }}
# cross_prefix: ${{ inputs.cross_prefix }}
bench_clang:
name: Bench nix ${{ inputs.name }}
runs-on: ${{ needs.start-ec2-runner.outputs.label }}
needs: start-ec2-runner # required to start the main job when the runner is ready
steps:
- uses: actions/checkout@v4

Check failure on line 126 in .github/workflows/bench_ec2_reusable.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/bench_ec2_reusable.yml

Invalid workflow file

You have an error in your yaml syntax on line 126
- name: Install clang
run: |
sudo apt-get update
sudo apt-get install python3-venv python3-pip make clang-18 -y
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -r requirements.txt
# deactivate
export CC=clang-18
# export BASH_ENV=$(pwd)/venv/bin/activate
- uses: ./.github/actions/bench
with:
nix-shell: ''
custom-shell: 'bash'
nix-cache: false
nix-verbose: ${{ inputs.verbose }}
name: ${{ inputs.name }} (clang-18)
cflags: ${{ inputs.cflags }} -mtune=native -march=native
archflags: ${{ inputs.archflags }}
opt: ${{ inputs.opt }}
perf: PERF
store_results: ${{ inputs.store_results }}
bench_extra_args: ${{ inputs.bench_extra_args }}
gh_token: ${{ secrets.AWS_GITHUB_TOKEN }}
cross_prefix: ${{ inputs.cross_prefix }}
stop-ec2-runner:
name: Stop ${{ inputs.name }} (${{ inputs.ec2_instance_type }})
permissions:
contents: 'read'
id-token: 'write'
needs:
- start-ec2-runner
# - bench_nix # required to wait when the main job is done
- bench_clang # required to wait when the main job is done
runs-on: ubuntu-latest
if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_ROLE }}
aws-region: ${{ env.AWS_REGION }}
- name: Stop EC2 runner
uses: machulav/ec2-github-runner@v2
with:
mode: stop
github-token: ${{ secrets.AWS_GITHUB_TOKEN }}
label: ${{ needs.start-ec2-runner.outputs.label }}
ec2-instance-id: ${{ needs.start-ec2-runner.outputs.ec2-instance-id }}