In our paper, we compared the performance of different accelerators under Optimus against the performance under pass-through based virtualization. Here, we give a brief guide of setting up the pass-through environment.
We modified the original OPAE driver/library, using the IOMMU to perform virtual-to-physical address translation (instead of using the MPF hardware library).
In order to run the pass-through experiments, we need to install the following components with specific branches:
- optimus-opae-sdk (branch:
iommu
) - optimus-host-module (branch:
pviommu
) - optimus-intel-fpga-bbb (brach:
iommu
) - hardcloud_no_openmp (branch:
iommu
)
While synthesizing the hardware, you will need to use nomux.txt
under the accelerator directory (e.g., optimus-intel-fpga-bbb/sample/tutorial/vai_membench/hw/nomux.txt
), instead of the one under the directory synth_config
.
Currently, pass-through does not support using partial reconfiguration inside a VM. As a result, we must reconfigure the FPGA to our desired accelerator before booting the virtual machine.
We need to use the VFIO interface to assign the desired accelerator to a VM, and enable pvIOMMU in the QEMU command.
We provide some helping scripts here.