This repository contains a list of applications and libraries that have been cross-compiled to WebAssembly for their use with Faasm.
WARNING: examples listed here have worked at some point in time. The fact that they are listed here does not mean that they still run, or that they are supported in any way.
Project Name | Language | Notes |
---|---|---|
FFmpeg | C, C++ | Static library |
Kernels | C, C++ | OpenMP, MPI |
LAMMPS | C++ | MPI |
libpng | C | Static library |
ImageMagick | C++ | Needs libpng |
LULESH | C++ | OpenMP |
Tensorflow | C++ | Static library |
This repository depends on Faasm's toolchain repos (C++, and Python) and the Faasm runtime. As a consequence, it is versioned with the versions of the previous.
If you want to upgrade the Python or C++ tag, you must update the submodule
and the GHA file. If you want to update the Faasm tag, you must update the
FAASM_VERSION
file, and the GHA file. Then, re-build the container images
with:
inv docker.build -c build -c run --nocache --push
To add a new application, you first need to cross-compile it to WebAssembly.
You can check the [tasks/
]](./tasks) folder for examples of how we do it for
existing applications. Most importantly, you will have to inidicate the right
sysroot, and pass the environment variables that we read from faasmtools
.
Once the application is cross-compiled, you must make it run with Faasm. The tests in GHA only test integration with the WAVM runtime in Faasm, but if you need to pick another one for a very specific reason, it can also be tested.