A team from the Georgia Institute of Technology and HP Labs in Palo Alto have written an 8 page paper on GPU accelerated virtual machines.
The use of virtualization to abstract underlying hardware can aid in sharing such resources and in efficiently managing their use by high performance applications. Unfortunately, virtualization also prevents efficient access to accelerators, such as Graphics Processing Units (GPUs), that have become critical components in the design and architecture of HPC systems. Supporting General Purpose computing on GPUs (GPGPU) with accelerators from different vendors presents significant challenges due to proprietary programming models, heterogeneity, and the need to share accelerator resources between different Virtual Machines (VMs).
To address this problem, this paper presents GViM, a system designed for virtualizing and managing the resources of a general purpose system accelerated by graphics processors. Using the NVIDIA GPU as an example, we discuss how such accelerators can be virtualized without additional hardware support and describe the basic extensions needed for resource management. Our evaluation with a Xen-based implementation of GViM demonstrate efficiency and flexibility in system usage coupled with only small performance penalties for the virtualized vs. non-virtualized solutions.
...
Our work is exploring efficient virtualization mechanisms for tightly coupled heterogeneous manycore systems, such as those (to be) used in HPC environments. Specifically, we focus on platforms with specialized graphics accelerators, and on such platforms, we are seeking to efficiently execute virtual machines (VMs) that run applications with components targeted for execution on GPUs. These GPU components are referred to as kernels in the rest of this paper.
Our approach, GViM, builds on existing virtualization solutions by integrating novel mechanisms for improved support of GPU-accelerated VirtualMachines (GViM). In comparison to prior work that has begun to consider the virtualization of GPU resources, our novel contributions address these platforms’ performance and flexibility needs, such as those present in the high performance community:
- Improved programmability and portability – In comparison to prior work, GViM virtualizes the graphics accelerator at the level of abstraction familiar to programmers, leveraging the CUDA APIs and their open source counterparts. This not only makes it easier to run and port standard applications, but it also relieves HPC application programmers of concerns about the physical positioning of accelerators and about driver and accelerator hardware versions. Deploying GViM requires minimal modification to the guest VMs running on the virtualized HPC platform.
- Efficient accelerator virtualization – GViM-based GPU virtualization offers low overheads and is competitive with kernels running in guest OSs that have direct access to accelerator resources. Attaining such high performance involves the careful management of the memory and device resources used by GPUs.
- Coordinated resource management – Using the GViM environment makes it easier for applications to ignore the issues related to efficiently sharing GPU resources. This is achieved by integrating methods into GViM for managing an application’s joint use of general purpose and accelerator cores. This paper establishes the importance of coordinated resource management for general purpose and graphics cores.
If you are interested in virtualization and GPGPU programming, this paper is a great read. You can download it here: http://www.cc.gatech.edu/~vishakha/files/GViM.pdf.