Skip to content

Optimise get_timestep to use a cached timestep to prevent having to malloc data each step #634

Optimise get_timestep to use a cached timestep to prevent having to malloc data each step

Optimise get_timestep to use a cached timestep to prevent having to malloc data each step #634

Workflow file for this run

# this file includes 4 stages
# 1. pre-commit - runs pre-commit using `.pre-commit-config.yaml`
# 2. build-scratch - (if pre-commit pass) then we build the project from scratch (single python versions) and pytest
# 3. build-wheels - (if pre-commit pass) then we build all the wheels for all valid versions
# 4. test-wheels - (if build-scratch and build-wheel passes) then we install wheel and run pytest for all python versions
name: CI
on:
workflow_dispatch:
inputs:
debug_enabled:
type: boolean
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
required: false
default: false
push:
paths-ignore:
- "docs/**"
pull_request:
branches:
- "*"
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: pre-commit/action@v3.0.1
build-scratch:
name: "${{ matrix.runs-on }} • py${{ matrix.python }}"
needs: pre-commit
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include:
# To minimise the computational resources, we only use a single python version and the final test-wheels for all python versions
- runs-on: ubuntu-latest
python: '3.12'
triplet: x64-linux-mixed
- runs-on: macos-13
python: '3.12'
triplet: x64-osx-mixed
- runs-on: windows-latest
python: '3.12'
triplet: x64-windows
env:
VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }}
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Download and unpack ROMs
run: ./scripts/download_unpack_roms.sh
- name: Build
run: python -m pip install --verbose .[test]
- name: Test
run: python -m pytest
build-wheels:
name: "${{ matrix.runs-on }} • ${{ matrix.arch }}"
needs: pre-commit
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include:
- runs-on: ubuntu-latest
arch: x86_64
- runs-on: ubuntu-24.04-arm
arch: aarch64
- runs-on: windows-latest
arch: AMD64
- runs-on: macos-13
arch: x86_64
- runs-on: macos-13
arch: arm64
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
if: runner.os == 'linux'
id: buildx
uses: docker/setup-buildx-action@v3
with:
install: true
- name: Build Docker image with vcpkg
if: runner.os == 'linux'
# using build-push-action (without push) to make use of cache arguments
uses: docker/build-push-action@v6
with:
context: .
file: ".github/docker/manylinux-${{ matrix.arch }}-vcpkg.Dockerfile"
tags: "manylinux-${{ matrix.arch }}-vcpkg:latest"
push: false
load: true
- name: Download and unpack ROMs
run: ./scripts/download_unpack_roms.sh
- name: Build wheels
uses: pypa/cibuildwheel@v2.23.2
env:
CIBW_ARCHS: "${{ matrix.arch }}"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ runner.os }}-${{ matrix.arch }}
path: ./wheelhouse/*.whl
test-wheels:
name: Test wheels
needs: [build-wheels, build-scratch]
strategy:
fail-fast: false
matrix:
include:
# example wheel names (if the wheel names change, look at the `ls wheels/` for the new names)
# ale_py-0.x.x-cp310-cp310-macosx_10_15_x86_64.whl
# ale_py-0.x.x-cp310-cp310-macosx_11_0_arm64.whl
# ale_py-0.x.x-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# ale_py-0.x.x-cp310-cp310-win_amd64.whl
- runs-on: ubuntu-latest
python: '3.9'
wheel-name: 'cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64'
arch: 'x86_64'
- runs-on: ubuntu-latest
python: '3.10'
wheel-name: 'cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64'
arch: 'x86_64'
- runs-on: ubuntu-latest
python: '3.11'
wheel-name: 'cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64'
arch: 'x86_64'
- runs-on: ubuntu-latest
python: '3.12'
wheel-name: 'cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64'
arch: 'x86_64'
- runs-on: ubuntu-latest
python: '3.13'
wheel-name: 'cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64'
arch: 'x86_64'
- runs-on: ubuntu-24.04-arm
python: '3.9'
wheel-name: 'cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64'
arch: 'aarch64'
- runs-on: ubuntu-24.04-arm
python: '3.10'
wheel-name: 'cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64'
arch: 'aarch64'
- runs-on: ubuntu-24.04-arm
python: '3.11'
wheel-name: 'cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64'
arch: 'aarch64'
- runs-on: ubuntu-24.04-arm
python: '3.12'
wheel-name: 'cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64'
arch: 'aarch64'
- runs-on: ubuntu-24.04-arm
python: '3.13'
wheel-name: 'cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64'
arch: 'aarch64'
- runs-on: windows-latest
python: '3.9'
wheel-name: 'cp39-cp39-win_amd64'
arch: AMD64
- runs-on: windows-latest
python: '3.10'
wheel-name: 'cp310-cp310-win_amd64'
arch: AMD64
- runs-on: windows-latest
python: '3.11'
wheel-name: 'cp311-cp311-win_amd64'
arch: AMD64
- runs-on: windows-latest
python: '3.12'
wheel-name: 'cp312-cp312-win_amd64'
arch: AMD64
- runs-on: windows-latest
python: '3.13'
wheel-name: 'cp313-cp313-win_amd64'
arch: AMD64
- runs-on: macos-13
python: '3.9'
wheel-name: 'cp39-cp39-macosx_13_0_x86_64'
arch: x86_64
- runs-on: macos-13
python: '3.10'
wheel-name: 'cp310-cp310-macosx_13_0_x86_64'
arch: x86_64
- runs-on: macos-13
python: '3.11'
wheel-name: 'cp311-cp311-macosx_13_0_x86_64'
arch: x86_64
- runs-on: macos-13
python: '3.12'
wheel-name: 'cp312-cp312-macosx_13_0_x86_64'
arch: x86_64
- runs-on: macos-13
python: '3.13'
wheel-name: 'cp313-cp313-macosx_13_0_x86_64'
arch: x86_64
- runs-on: macos-14
python: '3.9'
wheel-name: 'cp39-cp39-macosx_13_0_arm64'
arch: arm64
- runs-on: macos-14
python: '3.10'
wheel-name: 'cp310-cp310-macosx_13_0_arm64'
arch: arm64
- runs-on: macos-14
python: '3.11'
wheel-name: 'cp311-cp311-macosx_13_0_arm64'
arch: arm64
- runs-on: macos-14
python: '3.12'
wheel-name: 'cp312-cp312-macosx_13_0_arm64'
arch: arm64
- runs-on: macos-14
python: '3.13'
wheel-name: 'cp313-cp313-macosx_13_0_arm64'
arch: arm64
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- uses: actions/download-artifact@v4
with:
name: wheels-${{ runner.os }}-${{ matrix.arch }}
- run: ls
- name: Install ALE wheel
# wildcarding doesn't work for some reason, therefore, update the project version here
run: python -m pip install "ale_py-0.11.1-${{ matrix.wheel-name }}.whl[test]"
- name: Test
run: python -m pytest