Abstract
Virtualization technology facilitates the sharing of resources by abstracting the underlying hardware and improving utilization across applications. In recent years, General Purpose Graphics Processing Units (GPGPUs) have become critical in high performance computing (HPC). Yet, the lack of open source programming models for GPUs and their architectural design pose significant challenges in using them in virtualized environments. The purpose of this study is to enhance the performance of HPC applications using the Compute Unified Device Architecture (CUDA) executing on the Guest OS. We used Qemu-KVM as the Virtual Machine Monitor (VMM) and Windows 8.1 as the Guest OS. A shared imposter library was created in the guest OS, which intercepts legitimate CUDA function calls and subsequently relays the request to the guest OS virtual device driver. The imposter driver then performs initializations, memory allocation and validation and then sends the packaged request to the virtual device. The virtual device in the VMM dequeues the request and, using the legitimate CUDA driver API, executes the request. When the virtual device completes the request, the results are channeled to the guest OS imposter driver. Ultimately, the results are presented to the user application as if CUDA were installed in the guest VM. Results illustrate near host performance for page locked memory and substantial improvement of pageable memory as a result of reduced TLB translation and reducing translation cost of pages’ virtual address to physical address and vice-versa when using large pages of 2MB on guest OS.