Skip to content

feat: export reactant compiled functions as tf SavedModel #5830

feat: export reactant compiled functions as tf SavedModel

feat: export reactant compiled functions as tf SavedModel #5830

Workflow file for this run

name: CI
on:
pull_request:
paths:
- ".github/workflows/CI.yml"
- "ext/**"
- "lib/**"
- "src/**"
- "test/**"
- "Project.toml"
push:
branches:
- main
- release-*
tags: "*"
paths:
- ".github/workflows/CI.yml"
- "ext/**"
- "lib/**"
- "src/**"
- "test/**"
- "Project.toml"
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: 90
name: Julia ${{ matrix.version }} - ${{ matrix.test_group }} - ${{ matrix.os }} - ${{ matrix.runtime }} - assertions=${{ matrix.assertions }} - ${{ github.event_name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
version:
- "1.10"
- "1.11"
# - 'nightly'
os:
- ubuntu-24.04
# `ubuntu-22.04-arm` is considered more stable than `ubuntu-24.04-arm`:
# <https://github.com/orgs/community/discussions/148648#discussioncomment-12099554>.
- ubuntu-22.04-arm
# Disable `macOS-13` until
# <https://github.com/EnzymeAD/Reactant.jl/issues/867> is resolved.
# - macOS-13
- macOS-latest
test_group:
- core
- neural_networks
- integration
runtime:
- "PJRT"
- "IFRT"
assertions:
- false
include:
- os: ubuntu-24.04
version: "1.10"
assertions: true
test_group: core
runtime: "PJRT"
- os: ubuntu-24.04
version: "1.10"
assertions: true
test_group: neural_networks
runtime: "PJRT"
- os: ubuntu-24.04
version: "1.10"
assertions: true
test_group: integration
runtime: "PJRT"
# - os: ubuntu-24.04
# libReactant: packaged
# version: '1.10'
# test_group: core
# - os: ubuntu-24.04
# libReactant: packaged
# version: '1.10'
# test_group: neural_networks
# - os: ubuntu-24.04
# libReactant: packaged
# version: '1.10'
# test_group: integration
env:
TMPDIR: ${{ github.workspace }}/tmp
steps:
- uses: actions/checkout@v4
- name: Create TMPDIR
run: |
mkdir -p ${{ env.TMPDIR }}
- uses: julia-actions/setup-julia@v2
if: ${{ ! matrix.assertions }}
with:
version: ${{ matrix.version }}
- uses: julia-actions/cache@v2
- 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
- name: "Setup Runtime Preferences"
uses: "DamianReeves/write-file-action@master"
with:
path: "LocalPreferences.toml"
write-mode: "overwrite"
contents: |
[Reactant]
xla_runtime = "${{ matrix.runtime }}"
- name: "Install Dependencies"
run: |
import Pkg
Pkg.Registry.update()
# Install packages present in subdirectories
dev_pks = Pkg.PackageSpec[]
for path in ("lib/ReactantCore",)
push!(dev_pks, Pkg.PackageSpec(; path))
end
Pkg.develop(dev_pks)
shell: julia --color=yes --code-coverage=user --depwarn=yes --project=. {0}
# Only in Julia v1.10 we need to install `ReactantCore` manually.
if: ${{ matrix.version == '1.10' }}
env:
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager
- name: "Run Tests"
timeout-minutes: 60
run: |
import Pkg
Pkg.Registry.update()
Pkg.test(; coverage="user")
shell: julia --color=yes --code-coverage=user --depwarn=yes --project=. {0}
id: run_tests
env:
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager
ENABLE_PJRT_COMPATIBILITY: 1
REACTANT_TEST_GROUP: ${{ matrix.test_group }}
XLA_FLAGS: "--xla_force_host_platform_device_count=12"
JULIA_DEBUG: "Reactant,Reactant_jll"
- name: Upload MLIR modules
uses: actions/upload-artifact@v4
timeout-minutes: 10
if: ${{ always() }}
with:
name: "mlir-${{ matrix.version }}-${{ matrix.test_group }}-${{ matrix.os }}-${{ matrix.runtime }}-assertions=${{ matrix.assertions }}-${{ github.event_name }}"
path: "**/*.mlir"
retention-days: 90
overwrite: false
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v5
with:
files: lcov.info