Calling conv part 1 #7773
This file contains hidden or 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: | |
| 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 |