Skip to content

Calling conv part 1 #7772

Calling conv part 1

Calling conv part 1 #7772

Workflow file for this run

name: CI
on:
pull_request:
paths:
- '.github/workflows/CI.yml'
- 'deps/**'
- 'ext/**'
- 'lib/**'
- 'src/**'
- 'test/**'
- '!test/integration/**'
- 'Project.toml'
push:
branches:
- main
- release-*
paths:
- '.github/workflows/CI.yml'
- 'deps/**'
- 'ext/**'
- 'lib/**'
- 'src/**'
- 'test/**'
- '!test/integration/**'
- 'Project.toml'
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:
timeout-minutes: 120
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ matrix.libEnzyme }} libEnzyme - assertions=${{ matrix.assertions }} llvm_args=${{ matrix.llvm_args }} - ${{ github.event_name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
version:
- '1.10'
- '1.11'
- 'nightly'
os:
- ubuntu-24.04
- macOS-latest
- windows-latest
llvm_args:
- ''
arch:
- default
assertions:
- false
libEnzyme: [local, packaged]
exclude:
- os: windows-latest
arch: default
libEnzyme: local
include:
- os: ubuntu-24.04
arch: x86
libEnzyme: packaged
version: '1.10'
assertions: false
- os: ubuntu-24.04
arch: default
libEnzyme: packaged
version: '1.10'
assertions: true
- os: ubuntu-24.04
arch: default
libEnzyme: packaged
version: '1.11'
assertions: true
- os: ubuntu-24.04
arch: default
libEnzyme: packaged
version: '1.10'
assertions: true
llvm_args: '--opaque-pointers'
- os: ubuntu-24.04
arch: default
libEnzyme: packaged
version: '1.11'
assertions: false
llvm_args: '--opaque-pointers'
- os: ubuntu-24.04
arch: default
libEnzyme: packaged
version: '1.12'
assertions: true
steps:
- uses: actions/checkout@v5
- uses: julia-actions/setup-julia@v2
if: ${{ ! matrix.assertions }}
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: actions/checkout@v5
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: julia-actions/cache@v2
- name: add EnzymeCore EnzymeTestUtils
shell: julia --color=yes --project=. {0}
run: |
using Pkg
Pkg.develop([PackageSpec(; path) for path in ("lib/EnzymeCore", "lib/EnzymeTestUtils")])
Pkg.instantiate()
if: ${{ matrix.version == '1.10' }}
env:
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager
- name: Build libEnzyme
if: ${{ matrix.libEnzyme == 'local' && matrix.os != 'macOS-latest'}}
id: build_libenzyme
run: |
julia --color=yes --project=deps -e 'using Pkg; Pkg.instantiate()'
julia --color=yes --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 --color=yes --project=deps -e 'using Pkg; Pkg.instantiate()'
SDKROOT=`xcrun --show-sdk-path` julia --color=yes --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
- name: "Set test arguments"
shell: bash
run: |
# Run tests in verbose mode
TEST_ARGS=(--verbose)
if [[ ${{ runner.os }} == "macOS" ]]; then
# Encourage ParallelTestRunner to use two jobs on macOS, rather
# than the single one it'd use by default.
TEST_ARGS+=(--jobs=2)
fi
echo "runtest_test_args=${TEST_ARGS[@]}" >> "${GITHUB_ENV}"
- uses: julia-actions/julia-runtest@v1
if: matrix.version != 'nightly' || steps.buildpkg.outcome == 'success'
continue-on-error: ${{ matrix.version == 'nightly' }}
id: run_tests
# TODO restore coverage post https://github.com/JuliaGPU/GPUCompiler.jl/pull/711
with:
coverage: ${{ matrix.version != '1.11' || !matrix.assertions }}
test_args: ${{ env.runtest_test_args }}
env:
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager
JULIA_LLVM_ARGS: ${{ matrix.llvm_args }}
- uses: julia-actions/julia-processcoverage@v1
if: matrix.version != 'nightly' || steps.run_tests.outcome == 'success'
- uses: codecov/codecov-action@v5
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
enzymetestutils:
timeout-minutes: 60
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'
- 'nightly'
os:
- ubuntu-latest
arch:
- default
libEnzyme: [packaged]
steps:
- uses: actions/checkout@v5
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: julia-actions/cache@v2
- 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@v5
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
enzymecore:
timeout-minutes: 20
name: EnzymeCore - 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/EnzymeCore"
strategy:
fail-fast: false
matrix:
version:
- '1.10'
- '1.11'
- 'nightly'
os:
- ubuntu-latest
arch:
- default
libEnzyme: [packaged]
steps:
- uses: actions/checkout@v5
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: julia-actions/cache@v2
- name: setup EnzymeCore
shell: julia --color=yes {0}
id: setup_testutils
continue-on-error: ${{ matrix.version == 'nightly' }}
run: |
using Pkg
Pkg.develop([PackageSpec(; path) for path in (".",)])
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("EnzymeCore"; coverage=true)
- uses: julia-actions/julia-processcoverage@v1
if: matrix.version != 'nightly' || steps.run_tests.outcome == 'success'
with:
directories: lib/EnzymeCore/src
- uses: codecov/codecov-action@v5
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