Accelerator-Docker : provides common interface for automatic passthrough of heterogeneous hardware accelerators in docker
Accelerator-Docker supports running container with accessibility to a target hardware accelerator (e.g., fpga or gpu).
It can manage status of all accelerators in a server.
Accelerator-Docker supports automatic pass-through of PCIe-connected accelerators (FPGA or GPU) in container. Original docker requires setting for mounting device driver, libraries to access specific hardware in the container. In the Accelerator-Docker, however, it automatically runs a container following the pre-determined settings with simple option. Moreover, it provides common interface to manage heterogeneous accelerators. More details are described below.
For dependencies, refer to Docker, Go, Protocol Buffers
Install dependencies for build
$ sudo apt-get update && \
sudo apt-get install -y build-essential git pkg-config libseccomp-dev libcap-dev libpci-dev libapparmor-dev libselinux1-dev
Now, clone this repository and make it.
$ git clone https://github.com/KAIST-NCL/Accelerator-Docker.git
$ cd Accelerator-Docker
$ make
$ sudo make install
$ sudo systemctl restart docker #Restart docker daemon to notify that new runtime is added
First, you need to provide device list you want to access from docker container as protocol buffer text form.
/etc/accelerator-docker/device.pbtxt
accelerators:[{
type: "xilinx.fpga/kcu1500",
devices:[{
name: "KCU-1500",
device_file:[
"/dev/xcldev1",
"/dev/xdmadev1"
],
library:[
"/PATH/TO/LIB/libxilinxopencl.so"
],
file:[{
src: "/PATH/IN/HOST/libxclgemdrv.so",
dst: "/PATH/IN/CONTAINER/libxclgemdrv.so",
}],
env:[{
key: "XILINX_SDX",
val: "/SDX"
}]
}]
}]
$ docker run --runtime acc-runtime -e ACC_VISIBLE_DEVICES=KCU-1500
Accelerator-Docker not only provides runtime hook for docker but also provides manager registered in device file.
Accelerator-Manager provides status for all devices and which container uses the hardware.
$ acc-manager list
This project is released under the BSD-3-Clause, see LICENSE for more information.