Heterogeneous systems (such as Intel’s Sandybridge microarchitecture shown above) consist of the various processor types so that a user can selectively utilize different processor types based on the user’s demands. Unfortunately, it is difficult to fully utilize the various processor types on heterogeneous systems due to many reasons. First, different processor types typically expose different programming models to programmers (e.g., OpenCL for GPUs). Second, heterogeneous systems typically require programmers to balance the workload of their applications between various processor types. Last but not least, the development of faster hardware consistently requires programmers to re-balance their already-balanced applications.
In order to overcome such programming challenges, we not only analyze the difficulties of programming on heterogeneous systems, but also propose software/hardware co-optimization techniques so that programmers can fully utilize the various processor types of a given heterogeneous systems without redundant optimizations. Our efforts to achieve these goals have produced the following representative research outcomes.
- Youngsok Kim, Jaewon Lee, Jae-Eon Jo, and Jangwoo Kim, “GPUdmm: A High-Performance and Memory-Oblivious GPU Architecture Using Dynamic Memory Management,” in Proc. 20th IEEE International Symposium on High Performance Computer Architecture (HPCA), 2014.
- Youngsok Kim, Jaewon Lee, Donggyu Kim, and Jangwoo Kim, “ScaleGPU: GPU Architecture for Memory-Unaware GPU Programming,” IEEE Computer Architecture Letters (CAL), 2013.