Building the vAccel Runtime
vAccelRT
vAccel is a runtime system for hardware acceleration. It provides an API with a set of functions that the runtime is able to offload to hardware acceleration devices. The design of the runtime is modular, it consists of a front-end library which exposes the API to the user application and a set of back-end plugins that are responsible to offload computations to the accelerator.
This design decouples the user application from the actual accelerator specific code. The advantage of this choice is that the application can make use of different hardware accelerators without extra development cost or re-compiling.
This repo includes the core runtime system, and back-end plugins for VirtIO and the Jetson Inference framework.
Build & Installation
1. Cloning and preparing the build directory
~ » git clone https://github.com/cloudkernels/vaccelrt.git
Cloning into 'vaccelrt'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (130/130), done.
remote: Total 215 (delta 115), reused 173 (delta 82), pack-reused 0
Receiving objects: 100% (215/215), 101.37 KiB | 804.00 KiB/s, done.
Resolving deltas: 100% (115/115), done.
~ » cd vaccelrt
~/vaccelrt(master) » mkdir build
~/vaccelrt(master) » cd build
~/vaccelrt/build(master) »
2. Building the core runtime system
# This sets the installation path to ${HOME}/.local
~/vaccelrt/build(master) » cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
~/vaccelrt/build(master) » mak
~/vaccelrt/build(master) » mak install
3. Building the plugins
Building the plugins is disabled, by default. You can enable building one or
more plugins at configuration time of CMake by setting the corresponding
variable of the following table to ON
Backend Plugin | Variable | Default |
---|---|---|
virtio | BUILD_PLUGIN_VIRTIO | OFF |
jetson | BUILD_PLUGIN_JETSON | OFF |
For example:
cmake -DBUILD_PLUGIN_VIRTIO=ON ..
will enable building the virtio backend plugin.
VirtIO plugin building options
Variable | Values | Default |
---|---|---|
VIRTIO_ACCEL_ROOT | Path to virtio module installation | /usr/local/include |
The VirtIO plugin uses the virtio-accel
kernel module to offload requests to the host. When building we need to point
CMake to the location of virtio-accel installation prefix using the
VIRTIO_ACCEL_ROOT
variable.
Jetson plugin building options
The jetson inference backends depends on the Jetson inference framework, a corresponding CUDA installation and the STB library.
Variable | Values | Default |
---|---|---|
CUDA_DIR | Path to CUDA installation | /usr/local/cuda/targets/x86_64-linux |
JETSON_DIR | Path to Jetson installation | /usr/local |
STB_DIR | Path to STB installation | /usr/local |