Partial evaluation for GPGPU programming
Is it possible to use partial evaluation for GPGPU programs optimization?
Optimizing GPU programs by partial evaluation
Aleksey Tyurin, Daniil Berezun, Semyon Grigorev
While GPU utilization allows one to speed up computations to the orders of magnitude, memory management remains the bottleneck making it often a challenge to achieve the desired performance. Hence, different memory optimizations are leveraged to make memory being used more effectively. We propose an approach automating memory management utilizing partial evaluation, a program transformation technique that enables data accesses to be pre-computed, optimized, and embedded into the code, saving memory transactions. An empirical evaluation of our approach shows that the transformed program could be up to 8 times as efficient as the original one in the case of CUDA C naïve string pattern matching algorithm implementation.