Skip to content

parallelize

parallelize #31

Workflow file for this run

name: CI
on: [push]
env:
FPTAYLOR_VERSION: 'fabc895ddc595dc41fbe7ce511049c745e1f9136'
CAKEML_VERSION: 'v1217'
CAKEML_BIN: '../cache/cakeml'
DAISY_VERSION: 'b483303f3914106173902669855d371ff73bf568'
DAISY_BASE: '../cache/daisy'
# latest stable version
JULIA_VERSION: '1'
jobs:
unit: # package setup, Racket unit testing
name: "Unit Tests"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Unit Tests"
id: unit
run: make raco-test
tools: # front-end tools
name: "Tools Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Export tool"
run: make export-test
- name: "Transform tool"
run: make transform-test
- name: "Toolserver tool"
run: make toolserver-test
- name: "Evaluate tool"
run: make evaluate-test
- name: "Tensor examples"
run: make tensor-test
c: # C langugae
name: "C Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "C sanity"
run: make c-sanity
- name: "C test"
run: make c-test
java: # Java langugae
name: "Java Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Java"
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '11'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Java sanity"
run: make java-sanity
- name: "Java test"
run: make java-test
go: # Go langugae
name: "Go Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Go sanity"
run: make go-sanity
- name: "Go test"
run: make go-test
rust: # Rust language
name: "Rust Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Rust"
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Rust sanity"
run: make rust-sanity
- name: "Rust test"
run: make rust-test
js: # JavaScript langugae
name: "JavaScript Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Node.js"
uses: actions/setup-node@v2
with:
node-version: '16'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "JS sanity"
run: make js-sanity
- name: "Java test"
if: ${{ (success() || failure()) && steps.java_sanity.outcome == 'success' }}
run: make java-test
- name: "JS test"
run: make js-test
sollya: # Sollya langugae
name: "Sollya Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev sollya
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Sollya sanity"
run: make sollya-sanity
- name: "Sollya test"
run: make sollya-test
fptaylor: # FPTaylor langugae
name: "FPTaylor Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install OCaml"
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: '4.04.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
eval $(opam env)
git clone https://github.com/soarlab/FPTaylor.git ../cache/fptaylor
(cd ../cache/fptaylor && git checkout ${FPTAYLOR_VERSION} && make clean-all && make)
echo "${PWD}/../cache/fptaylor" >> $GITHUB_PATH
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "FPTaylor sanity"
run: make fptaylor-sanity
- name: "FPTaylor test" # make sure environment has correct variables
run: eval `opam config env` && make fptaylor-test
daisy: # Scala language (daisy tool)
name: "Scala (Daisy) Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- uses: olafurpg/setup-scala@v11
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Java"
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '8'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install Daisy"
run: |
git clone --recurse-submodules https://github.com/malyzajko/daisy ../cache/daisy
cd ../cache/daisy
git checkout ${DAISY_VERSION}
sed -i 's/) dependsOn (smtlib//g' build.sbt
sed -i 's/libraryDependencies ++= Seq(/libraryDependencies ++= Seq("com.regblanc" %% "scala-smtlib" % "0.2.1-42-gc68dbaa",/g' build.sbt
sbt compile
sbt script
echo "${PWD}" >> $GITHUB_PATH
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Scala (Daisy) sanity"
run: make scala-sanity
- name: "Scala (Daisy) test"
run: make scala-test
z3: # SMT (Z3) language
name: "SMT (Z3) Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Z3"
uses: pavpanchekha/[email protected]
with:
version: '4.8.8'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "SMT (Z3) sanity"
run: make smtlib2-sanity
- name: "SMT (Z3) test"
run: make smtlib2-test
cakeml: # CakeML language
name: "CakeML Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
(mkdir -p ../cache/cakeml && curl -L https://github.com/CakeML/cakeml/releases/download/${CAKEML_VERSION}/cake-x64-64.tar.gz | \
tar -xz -C ../cache/cakeml --strip-components 1)
(cd ../cache/cakeml && make cake)
echo "${PWD}/../cache/cakeml" >> $GITHUB_PATH
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "CakeML sanity"
run: make cakeml-sanity
- name: "CakeML test"
run: make cakeml-test
ocaml: # OCaml language
name: "OCaml Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install OCaml"
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: '4.08.1'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "OCaml sanity"
run: |
eval `opam config env`
make ocaml-sanity
- name: "OCaml test"
run: |
eval `opam config env`
make ocaml-test
python: # Python language
name: "Python Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Python sanity"
run: make python-sanity
- name: "Python test"
run: make python-test
fortran: # Fortran language (2003)
name: "Fortran Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev gfortran
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Fortran sanity"
run: make fortran-sanity
- name: "Fortran test"
run: make fortran-test
# This test does not work
# Hard to figure out why
#
# matlab: # MATLAB language (2003)
# name: "MATLAB Tests"
# runs-on: ubuntu-latest
# needs: [ 'unit' ]
# steps:
# - uses: actions/checkout@v2
# - name: "Install Racket"
# uses: Bogdanp/[email protected]
# with:
# architecture: 'x64'
# distribution: 'full'
# variant: 'CS'
# version: '8.2'
# - name: "Install MATLAB"
# uses: matlab-actions/setup-matlab@v0
# - name: "Install Packages"
# run: |
# sudo apt-get update
# sudo apt-get install -y libmpfr6 libmpfr-dev
# - name: "Install as Racket package"
# run: raco pkg install --auto
# - name: "MATLAB sanity"
# run: make matlab-sanity
# - name: "MATLAB test"
# run: make matlab-test
haskell: # Haskell language
name: "Haskell Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Haskell sanity"
run: make haskell-sanity
- name: "Haskell test"
run: make haskell-test
# Note: Julia 1.6.2 will crash when trying to print infinity
# Ubuntu 20.04 ships with Julia 1.4.1
# Julia tests take forever, so split the jobs
julia-sanity: # Julia language
name: "Julia Sanity Tests"
runs-on: ubuntu-latest
needs: [ 'unit' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install Julia"
uses: julia-actions/setup-julia@v1
with:
version: '1'
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Julia sanity"
run: make julia-sanity
julia-benchmarks:
name: Julia Benchmarks
runs-on: ubuntu-latest
needs: [ 'julia-sanity' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install Julia"
uses: julia-actions/setup-julia@v1
with:
version: '1'
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Julia benchmarks"
run: make julia-benchmarks
julia-tests:
name: Julia Tests (binary64, mixed)
runs-on: ubuntu-latest
needs: [ 'julia-sanity' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install Julia"
uses: julia-actions/setup-julia@v1
with:
version: '1'
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Julia tests"
run: make julia-binary64
julia-binary32-tests:
name: Julia Tests (binary32)
runs-on: ubuntu-latest
needs: [ 'julia-sanity' ]
steps:
- uses: actions/checkout@v2
- name: "Install Racket"
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: '8.2'
- name: "Install Packages"
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6 libmpfr-dev
- name: "Install Julia"
uses: julia-actions/setup-julia@v1
with:
version: '1'
- name: "Install as Racket package"
run: raco pkg install --auto
- name: "Julia tests"
run: make julia-binary32