Skip to content

Bump deps

Bump deps #129

Workflow file for this run

name: Test example applications
on:
push:
branches: [main]
pull_request:
branches: [main]
types: [opened, synchronize, reopened, ready_for_review]
jobs:
# Cancel previous running actions for the same PR
cancel_previous:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- name: Cancel Workflow Action
uses: styfle/[email protected]
checks:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
# --- Update code ---
- name: "Checkout code"
uses: actions/checkout@v3
with:
submodules: true
# --- Formatting ---
- name: "Format code"
run: ./bin/inv_wrapper.sh format-code --check
build-examples:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
container:
image: faasm.azurecr.io/examples-build:0.3.1_0.3.1
credentials:
username: ${{ secrets.ACR_SERVICE_PRINCIPAL_ID }}
password: ${{ secrets.ACR_SERVICE_PRINCIPAL_PASSWORD }}
steps:
- name: "Checkout code"
uses: actions/checkout@v3
with:
submodules: true
- name: "Build FFmpeg"
run: ./bin/inv_wrapper.sh ffmpeg
- name: "Build ImageMagick"
run: ./bin/inv_wrapper.sh libpng imagemagick
- name: "Build Kernels"
run: ./bin/inv_wrapper.sh kernels kernels --native
- name: "Build LAMMPS"
run: ./bin/inv_wrapper.sh lammps lammps --native
- name: "Build Lulesh"
run: ./bin/inv_wrapper.sh lulesh lulesh --native
- name: "Build TensorFlow"
run: ./bin/inv_wrapper.sh tensorflow
- name: "Build PolyBench/C"
run: ./bin/inv_wrapper.sh polybench polybench --native
- name: "Build functions used in the tests"
run: ./bin/inv_wrapper.sh func.tests
- name: "Upload examples wasm"
uses: actions/[email protected]
with:
name: examples-wasm
path: /usr/local/faasm/wasm
- name: "Copy WASM files to distribute as an artifact"
run: ./bin/inv_wrapper.sh wasm
- uses: actions/upload-artifact@v3
with:
name: examples-wasm
path: ./wasm
run-examples:
if: github.event.pull_request.draft == false
needs: [build-examples]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
wasm_vm: [wavm, wamr]
defaults:
run:
working-directory: /usr/local/code/faasm
env:
CGROUP_MODE: off
DEFAULT_MPI_WORLD_SIZE: 4
HOST_TYPE: ci
LOG_LEVEL: info
NETNS_MODE: off
OVERRIDE_CPU_COUNT: 30
PLANNER_HOST: planner
PLANNER_PORT: 8080
REDIS_QUEUE_HOST: redis
REDIS_STATE_HOST: redis
WASM_VM: ${{ matrix.wasm_vm }}
container:
image: faasm.azurecr.io/examples-run:0.15.0
credentials:
username: ${{ secrets.ACR_SERVICE_PRINCIPAL_ID }}
password: ${{ secrets.ACR_SERVICE_PRINCIPAL_PASSWORD }}
services:
redis:
image: faasm.azurecr.io/redis:0.15.0
credentials:
username: ${{ secrets.ACR_SERVICE_PRINCIPAL_ID }}
password: ${{ secrets.ACR_SERVICE_PRINCIPAL_PASSWORD }}
minio:
image: faasm.azurecr.io/minio:0.15.0
credentials:
username: ${{ secrets.ACR_SERVICE_PRINCIPAL_ID }}
password: ${{ secrets.ACR_SERVICE_PRINCIPAL_PASSWORD }}
env:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
planner:
image: faasm.azurecr.io/planner:0.10.0
steps:
- name: "Download examples wasm"
uses: actions/[email protected]
with:
name: examples-wasm
path: /usr/local/faasm/wasm
- name: "Run codegen for all the examples"
run: |
./bin/inv_wrapper.sh codegen.user kernels-mpi
./bin/inv_wrapper.sh codegen.user kernels-omp
./bin/inv_wrapper.sh codegen.user polybench
./bin/inv_wrapper.sh codegen imagemagick main
./bin/inv_wrapper.sh codegen lammps main
./bin/inv_wrapper.sh codegen lulesh main
./bin/inv_wrapper.sh codegen ffmpeg check
./bin/inv_wrapper.sh codegen tf check
- name: "Put all data files in place"
run: ./bin/inv_wrapper.sh data
working-directory: /code/examples
- name: "Run MPI kernels"
if: "contains(env.WASM_VM, 'wavm')"
run: |
# The global MPI kernel stopped working when enabling SIMD
# ./bin/inv_wrapper.sh run.pool kernels-mpi global --cmdline '10 1024'
./bin/inv_wrapper.sh run.pool kernels-mpi p2p --cmdline '10 1024 1024'
./bin/inv_wrapper.sh run.pool kernels-mpi sparse --cmdline '10 10 5'
./bin/inv_wrapper.sh run.pool kernels-mpi transpose --cmdline '10 1024 32'
./bin/inv_wrapper.sh run.pool kernels-mpi stencil --cmdline '10 1000'
# The dgemm MPI kernel does not work because we are missing
# implementations for MPI_Comm_group, MPI_Group_incl, and MPI_Comm_create
# ./bin/inv_wrapper.sh run.pool kernels-mpi dgemm --cmdline '10 1024 32 1'
./bin/inv_wrapper.sh run.pool kernels-mpi nstream --cmdline '10 1024 32'
./bin/inv_wrapper.sh run.pool kernels-mpi reduce --cmdline '10 1024'
# The random MPI kernel does not work because we are missing
# implementations for MPI_Alltoallv
# ./bin/inv_wrapper.sh run.pool kernels-mpi random --cmdline '32 20'
- name: "Run OpenMP kernels"
if: "contains(env.WASM_VM, 'wavm')"
run: |
./bin/inv_wrapper.sh run.pool kernels-omp global --cmdline '2 10 1024'
./bin/inv_wrapper.sh run.pool kernels-omp p2p --cmdline '2 10 1024 1024'
# The sparse OpenMP kernel fails during the result integrity checks
# ./bin/inv_wrapper.sh run.pool kernels-omp sparse --cmdline '2 10 10 5'
# The transpose OpenMP kernel can not be cross-compiled due to problems
# with the static_for signature and symbol definition
# ./bin/inv_wrapper.sh run.pool kernels-omp transpose --cmdline '10 1024 32'
# The stencil OpenMP kernel can not be cross-compiled due to a problem
# with the faasm_sm_reduce signature
# ./bin/inv_wrapper.sh run.pool kernels-omp stencil --cmdline '10 1000'
./bin/inv_wrapper.sh run.pool kernels-omp dgemm --cmdline '2 2 1024 32'
./bin/inv_wrapper.sh run.pool kernels-omp nstream --cmdline '2 10 1024 32'
./bin/inv_wrapper.sh run.pool kernels-omp reduce --cmdline '2 10 1024'
# The random OpenMP kernel can not be cross-compiled due to a problem
# with the faasm_sm_reduce signature
# ./bin/inv_wrapper.sh run.pool kernels-omp random --cmdline '32 20'
- name: "Run PolyBench/C"
# We deliberately enumerate all the supported functions here and
# execute them individually, rather than using the microbench runner.
# This is so that we can more easily track what functions are supported
# and what functions are not
run: |
./bin/inv_wrapper.sh run polybench poly_covariance
./bin/inv_wrapper.sh run polybench poly_correlation
./bin/inv_wrapper.sh run polybench poly_2mm
./bin/inv_wrapper.sh run polybench poly_3mm
./bin/inv_wrapper.sh run polybench poly_atax
./bin/inv_wrapper.sh run polybench poly_bicg
./bin/inv_wrapper.sh run polybench poly_doitgen
./bin/inv_wrapper.sh run polybench poly_mvt
./bin/inv_wrapper.sh run polybench poly_cholesky
./bin/inv_wrapper.sh run polybench poly_durbin
./bin/inv_wrapper.sh run polybench poly_gramschmidt
./bin/inv_wrapper.sh run polybench poly_lu
./bin/inv_wrapper.sh run polybench poly_ludcmp
./bin/inv_wrapper.sh run polybench poly_trisolv
./bin/inv_wrapper.sh run polybench poly_deriche
./bin/inv_wrapper.sh run polybench poly_floyd-warshall
./bin/inv_wrapper.sh run polybench poly_nussinov
./bin/inv_wrapper.sh run polybench poly_adi
./bin/inv_wrapper.sh run polybench poly_fdtd-2d
./bin/inv_wrapper.sh run polybench poly_heat-3d
./bin/inv_wrapper.sh run polybench poly_jacobi-1d
./bin/inv_wrapper.sh run polybench poly_jacobi-2d
./bin/inv_wrapper.sh run polybench poly_seidel-2d
- name: "Run ImageMagick"
if: "contains(env.WASM_VM, 'wavm')"
run: ./bin/inv_wrapper.sh run imagemagick main --cmdline 'faasm://im/sample_image.png -flip faasm://im/image_out.png'
- name: "Run LAMMPS"
run: ./bin/inv_wrapper.sh run.pool lammps main --cmdline '-in faasm://lammps-data/in.controller.wall'
- name: "Run LULESH"
if: "contains(env.WASM_VM, 'wavm')"
run: ./bin/inv_wrapper.sh run.pool lulesh main --cmdline '-i 5 -s 20 -r 11 -c 1 -b 1' --data '4'
- name: "Run TFlite check"
if: "contains(env.WASM_VM, 'wavm')"
run: ./bin/inv_wrapper.sh run tf check
- name: "Run FFmpeg check"
run: ./bin/inv_wrapper.sh run ffmpeg check