|Home \ Graduation Activities \ Post-Graduation Page||Login|
Multi-GPU Support for the Marrow Algorithmic Skeleton Framework
With the proliferation of general purpose GPUs, workload parallelization and data-transfer optimization became an increasing concern. The natural evolution from using a single GPU, is multiplying the amount of available processors, presenting new chal- lenges, as tuning the workload decompositions and load balancing, when dealing with heterogeneous GPUs. Higher-level programming is a very important asset in a multi-GPU environment, due to the complexity inherent to the currently used GPGPU APIs (OpenCL and CUDA), because of their low-level and code overhead. This can be obtained by introducing an abstraction layer, which has the advantage of enabling implicit optimizations and or- chestrations such as transparent load balancing mechanism and reduced explicit code overhead. Algorithmic Skeletons, previously used in cluster environments, have recently been adapted to the GPGPU context. Skeletons abstract most sources of code overhead, by defining computation patterns of commonly used algorithms. The Marrow algorithmic skeleton library is one of these, taking advantage of the abstractions to automate the orchestration needed for an efficient GPU execution. This thesis proposes the extension of Marrow to leverage the use of algorithmic skele- tons in the modular and efficient programming of multiple heterogeneous GPUs, within a single machine. We were able to achieve a good balance between simplicity of the programming model and performance, obtaining good scalability when using multiple GPUs, with an efficient load distribution, although at the price of some overhead when using a single- GPU.
Start Date: 2012-09-10
End Date: 2013-11-04
Post-Graduation Student / Researcher / Professor: