README.md

coaster •

coaster is an extensible, pluggable, backend-agnostic framework for parallel,
high-performance computations on CUDA, OpenCL and common host CPU. It is fast, easy
to build and provides an extensible Rust struct to execute operations on almost any
machine, even if it does not have CUDA or OpenCL capable devices.

coaster's abstracts over the different computation languages (Native,
OpenCL, Cuda) and let's you run highly-performant code, thanks to easy
parallelization, on servers, desktops or mobiles without the need to adapt your
code for the machine you deploy to. coaster does not require OpenCL or Cuda
on the machine and automatically falls back to the native host CPU, making your
application highly flexible and fast to build.

coaster was started as collenchyma at autumn.ai ot support the Machine Intelligence
Framework Leaf with backend-agnostic, state-of-the-art performance.

Parallelizing Performance
coaster makes it easy to parallelize computations on your machine, putting
all the available cores of your CPUs/GPUs to use.
coaster provides optimized operations through Plugins,
that you can use right away to speed up your application.

Easily Extensible
Writing custom operations for GPU execution becomes easy with coaster, as
it already takes care of Framework peculiarities, memory management, safety and other
overhead. coaster provides Plugins (see examples below), that you can use to extend
the coaster backend with your own, business-specific operations.

Butter-smooth Builds
As coaster does not require the installation of various frameworks and
libraries, it will not add significantly to the build time of your application.
coaster checks at run-time if these frameworks can be used and gracefully
falls back to the standard, native host CPU if they are not.
No long and painful build procedures for you or your users.

Getting Started

Plugins

You can easily extend coaster's Backend with more backend-agnostic operations, through Plugins.
Plugins provide a set of related operations - BLAS would be a good example. To extend coaster's Backend
with operations from a Plugin, just add a the desired Plugin crate to your Cargo.toml file.
Here is a list of available coaster Plugins, that you can use right away for your own application, or
take as a starting point, if you would like to create your own Plugin.

Contributing

We have a mostly real-time collaboration culture and happens here on Github and
on the Coaster Gitter Channel.
You can also reach out to the Maintainer(s)
{@drahnr,}.

Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as below, without any additional terms or
conditions.