Initial memory handling #5587
Workflow file for this run
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: CI | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
- release-* | |
tags: '*' | |
concurrency: | |
# Skip intermediate builds: always. | |
# Cancel intermediate builds: only if it is a pull request build. | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} | |
jobs: | |
test: | |
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ matrix.libEnzyme }} libEnzyme - assertions=${{ matrix.assertions }} - ${{ github.event_name }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
version: | |
- '1.10' | |
- ~1.11.0-0 | |
- 'nightly' | |
os: | |
- ubuntu-20.04 | |
- macOS-latest | |
- windows-latest | |
arch: | |
- x64 | |
assertions: | |
- false | |
libEnzyme: [local, packaged] | |
exclude: | |
- os: windows-latest | |
arch: x64 | |
libEnzyme: local | |
include: | |
- os: ubuntu-20.04 | |
arch: x86 | |
libEnzyme: packaged | |
version: '1.10' | |
assertions: false | |
- os: ubuntu-20.04 | |
arch: x64 | |
libEnzyme: packaged | |
version: '1.10' | |
assertions: true | |
- os: ubuntu-20.04 | |
arch: x64 | |
libEnzyme: packaged | |
version: '1.11' | |
assertions: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
if: ${{ ! matrix.assertions }} | |
with: | |
version: ${{ matrix.version }} | |
arch: ${{ matrix.arch }} | |
- uses: actions/checkout@v4 | |
if: ${{ matrix.assertions }} | |
with: | |
repository: 'JuliaLang/julia' | |
ref: release-${{ matrix.version }} | |
path: 'julia' | |
- name: Compile Julia | |
if: ${{ matrix.assertions }} | |
run: | | |
sed -i.bak 's/exit 2/exit 0/g' julia/deps/tools/jlchecksum | |
make -C julia -j $(nproc) FORCE_ASSERTIONS=1 LLVM_ASSERTIONS=1 JULIA_PRECOMPILE=0 | |
echo $PWD/julia/usr/bin >> $GITHUB_PATH | |
- uses: actions/cache@v4 | |
env: | |
cache-name: cache-artifacts | |
with: | |
path: ~/.julia/artifacts | |
key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} | |
restore-keys: | | |
${{ runner.os }}-test-${{ env.cache-name }}- | |
${{ runner.os }}-test- | |
${{ runner.os }}- | |
- name: add EnzymeCore | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop([PackageSpec(; path) for path in ("lib/EnzymeCore", "lib/EnzymeTestUtils")]) | |
Pkg.instantiate() | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- name: Build libEnzyme | |
if: ${{ matrix.libEnzyme == 'local' && matrix.os != 'macOS-latest'}} | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
id: build_libenzyme | |
run: | | |
julia --project=deps -e 'using Pkg; Pkg.instantiate()' | |
julia --project=deps deps/build_local.jl | |
cp LocalPreferences.toml test/ | |
- name: Build libEnzyme MacOS | |
if: ${{ matrix.libEnzyme == 'local' && matrix.os == 'macOS-latest'}} | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
id: build_libenzyme_mac | |
run: | | |
julia --project=deps -e 'using Pkg; Pkg.instantiate()' | |
SDKROOT=`xcrun --show-sdk-path` julia --project=deps deps/build_local.jl | |
cp LocalPreferences.toml test/ | |
- uses: julia-actions/julia-buildpkg@v1 | |
if: matrix.version != 'nightly' || steps.build_libenzyme.outcome == 'success' || steps.build_libenzyme_mac.outcome == 'success' | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
id: buildpkg | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- uses: julia-actions/julia-runtest@v1 | |
if: matrix.version != 'nightly' || steps.buildpkg.outcome == 'success' | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
id: run_tests | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- uses: julia-actions/julia-processcoverage@v1 | |
if: matrix.version != 'nightly' || steps.run_tests.outcome == 'success' | |
- uses: codecov/codecov-action@v4 | |
if: matrix.version != 'nightly' || steps.run_tests.outcome == 'success' | |
with: | |
file: lcov.info | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: false # or true if you want CI to fail when Codecov fails | |
enzymetestutils: | |
name: EnzymeTestUtils - Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ matrix.libEnzyme }} libEnzyme - ${{ github.event_name }} | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
env: | |
JULIA_PROJECT: "lib/EnzymeTestUtils" | |
strategy: | |
fail-fast: false | |
matrix: | |
version: | |
- '1.10' | |
- ~1.11.0-0 | |
- 'nightly' | |
os: | |
- ubuntu-latest | |
arch: | |
- x64 | |
libEnzyme: [packaged] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.version }} | |
arch: ${{ matrix.arch }} | |
- uses: actions/cache@v4 | |
env: | |
cache-name: cache-artifacts | |
with: | |
path: ~/.julia/artifacts | |
key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} | |
restore-keys: | | |
${{ runner.os }}-test-${{ env.cache-name }}- | |
${{ runner.os }}-test- | |
${{ runner.os }}- | |
- name: setup EnzymeTestUtils | |
shell: julia --color=yes {0} | |
id: setup_testutils | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
run: | | |
using Pkg | |
Pkg.develop([PackageSpec(; path) for path in (".", "lib/EnzymeCore")]) | |
Pkg.instantiate() | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- name: Run the tests | |
if: matrix.version != 'nightly' || steps.setup_testutils.outcome == 'success' | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
id: run_tests | |
shell: julia --color=yes {0} | |
run: | | |
using Pkg | |
Pkg.test("EnzymeTestUtils"; coverage=true) | |
- uses: julia-actions/julia-processcoverage@v1 | |
if: matrix.version != 'nightly' || steps.run_tests.outcome == 'success' | |
with: | |
directories: lib/EnzymeTestUtils/src | |
- uses: codecov/codecov-action@v4 | |
if: matrix.version != 'nightly' || steps.run_tests.outcome == 'success' | |
with: | |
files: lcov.info | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: false # or true if you want CI to fail when Codecov fails | |
integration: | |
name: Integration Tests - ${{ matrix.test }} | |
runs-on: ${{ matrix.os }} | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
strategy: | |
fail-fast: false | |
matrix: | |
version: | |
- '1.10' | |
os: | |
- ubuntu-latest | |
test: | |
- DynamicExpressions | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.version }} | |
- uses: julia-actions/cache@v4 | |
- uses: julia-actions/julia-buildpkg@v1 | |
- name: "Run tests" | |
run: | | |
julia --color=yes --project=test/integration -e 'using Pkg; Pkg.develop([PackageSpec(; path) for path in (".", "lib/EnzymeCore")]); Pkg.instantiate()' | |
julia --color=yes --project=test/integration --threads=auto --check-bounds=yes test/integration/${{ matrix.test }}.jl | |
shell: bash | |
docs: | |
name: Documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: '1' | |
- uses: julia-actions/cache@v4 | |
- run: | | |
julia --project=docs -e ' | |
using Pkg | |
Pkg.develop([PackageSpec(path="lib/EnzymeCore"), PackageSpec(path="lib/EnzymeTestUtils"), PackageSpec(path=pwd())]) | |
Pkg.instantiate()' | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- run: | | |
julia --project=docs -e ' | |
using Documenter: DocMeta, doctest | |
using Enzyme | |
DocMeta.setdocmeta!(Enzyme, :DocTestSetup, :(using Enzyme); recursive=true) | |
doctest(Enzyme)' | |
- run: julia --project=docs docs/make.jl | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} |