The Eighteenth International Conference on
Raleigh, North Carolina. September 12-16, 2009.
CUDA-Zero: A Framework for Porting Shared Memory GPU Applications to Multi-GPUs
Advisors: Wen-mei Hwu2, and Wenguang Chen1, and Weimin Zheng1
1 Tsinghua University, China
2 University of Illinois at Urbana Champaign
As the prevalence of general purpose computations on GPU, shared memory programming models were proposed to ease the pain of GPU programming. However, with the demanding needs of more intensive workloads, it's desirable to port GPU programs to more scalable distributed memory environment, such as multi-GPUs. To achieve this, programs need to be re-written with mixed programming models (e.g. CUDA and Message Passing). Programmers not only need to work carefully on workload distribution, but also on scheduling mechanisms to ensure the efficiency of the execution. In this paper, we studied the possibilities of automating the process of parallelization to multi-GPUs. Starting from a GPU program written in shared memory model, our framework analyzes the access patterns of arrays in kernel functions to derive the data partition schemes. To acquire the access pattern, we proposed a 3-tiers approach: static analysis, profile based analysis and user annotation. Experiments show that most access patterns can be derived correctly by the first two tiers, which means zero efforts are needed to port an existing application to distributed memory environment. We use our framework to parallelize several applications, and showed that for certain kinds of applications, CUDA-Zero can achieve efficient parallelization in multi-GPU environment.