API Remoting turnkey solution for virtualizing hardware resources
Modern heterogeneous embedded SoCs are designed to be power efficient and to provide optimal heat dissipation when compared to traditional off-the-shelf CPUs. Such platforms can integrate powerful multi-core programmable GPUs and accelerators, that can be exploited for highly parallel computing tasks, making them suitable for various systems in multiple market segments, from automotive to HPC, from networking and telecommunications to personal and residential gateways.
In this context, to achieve hardware consolidation, security isolation and higher flexibility of the overall system, virtualization plays a key role. Its adoption has been accelerated by the availability of hardware virtualization extensions in modern processors, capable of drastically reducing the overhead of executing a virtual environment. This is the case in latest ARM (e.g., armv7-a, armv8) processors, where virtualization is part of the core platform definition.
Differently from CPUs only few peripherals offer support for efficient virtualization at the hardware level (e.g., SR-IOV based network controllers). There is therefore a need to virtualize such peripherals in order to increase the adoption of heterogeneous SoCs across different domains. Of primary importance in heterogeneous systems are GPUs, extensively used for the execution of highly parallel computing workloads (e.g., HPC, networking) and graphics pipelines (e.g., automotive). However, GPUs integrated in heterogeneous SoCs not always offer hardware support for virtualization, making necessary the usage of an alternative software-based solution.
API Remoting for GPU enables OpenCL/OpenGL in VMs
Virtual Open Systems proposes a software solution for GPU virtualization, based on API Remoting, enabling GPU sharing among virtual machines through a programming API interface. User-space applications running on guest operating systems can leverage the GPU through its programming API (e.g., OpenCL, OpenGL) with no changes to the source code, and without the need for the hypervisor to provide a virtual GPU abstraction.
Each API call passes through the three layers of the API Remoting framework: front-end, transport and back-end. The front-end, installed in the guest OS, implements the API stubs that forward the calls using the transport layer. The back-end running on the host handles the call requests received over the transport and executes them on the GPU hardware using the actual API library. The transport layer is designed to minimize the communication overhead between back-end and front-end, and relies on a zero-copy memory sharing mechanism. Alternative implementations can exploit network sockets to enable GPU sharing among different physical server nodes.
Top level architecture of the Virtual Open Systems API Remoting product offer
API Remoting can be beneficial for several application domains such as high performance computing (HPC), where virtualized applications can take advantage of the GPU to accelerate data processing; Network Functions Virtualization (NFV), where GPUs can be used to accelerate VNFs processing; API Remoting can be used also in a virtualized in-vehicle-infotainment (IVI) system to impress with rich graphics.