Abstract-Graphics processing units (GPUs) have been widely used as accelerators in large-scale heterogeneous computing systems. However, current programming models can only support the utilization of local GPUs. When using non-local GPUs, programmers need to explicitly call API functions for data communication across computing nodes. As such, programming GPUs in large-scale computing systems is more challenging than local GPUs since local and remote GPUs have to be dealt with separately. In this work, we propose a virtual OpenCL (VOCL) framework to support the transparent virtualization of GPUs. This framework, based on the OpenCL programming model, exposes physical GPUs as decoupled virtual resources that can be transparently managed independent of the application execution. To reduce the virtualization overhead, we optimize the GPU memory accesses and kernel launches. We also extend the VOCL framework to support live task migration across physical GPUs to achieve load balance and/or quick system maintenance. Our experiment results indicate that VOCL can greatly simplify the task of programming cluster-based GPUs at a reasonable virtualization cost. Keywords-graphics processing unit (GPU), virtual OpenCL, task migration I. INTRODUCTION Today, the growth rate of computational power required for some scientific computations has been outstripping that of the computational capabilities of traditional processors. On the other hand, gains in computational horsepower by increasing the clock speed have hit a wall in the mid-2000s due to the fabrication process and power/leakage constraints. As a consequence, parallelism must be relied upon in order to improve computational performance. At the hardware level, performance improvements have been driven by increasing the number of cores per processor, which is true for both traditional x86 multicore processors and many-core GPU processors. These multi-and many-core processors in turn have been aggregated into compute nodes, which are then aggregated into cluster supercomputers. Originally designed solely for graphics processing, GPUs have evolved into programmable processors for generalpurpose computation. With parallel programming models such as CUDA [10] and OpenCL [7] ), programming GPUs has become easier than ever. Many applications have now been parallelized on GPUs, and significant performance improvements have been reported [11] . However, current GPU programming models only support the utilization of GPUs installed locally. When a program needs to use GPUs that are not locally installed, API functions such as TCP sockets and Message Passing Interface (MPI) [8] should be called explicitly to handle data communication
Virtual OpenCL REF , based on the OpenCL programming model, exposes physical GPUs as decoupled virtual resources that can be transparently managed independent of the application execution.
Generalizing the Utility of GPUs in Large-Scale Heterogeneous Computing Systems
2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum
2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum
Computer Science