Abstract :
Modern GPU memory systems manifest more varieties, increasing complexities, and rapid changes. Different placements of data on memory systems often cause significant differences in program performance. Most current GPU programming systems rely on programmers to indicate the appropriate placements, but finding the appropriate placements is difficult for programmers in practice owing to the complexity and fast changes of memory systems, as well as the input sensitivity of appropriate data placements--that is, the best placements often differ when a program runs on a different input data set. This article introduces a software framework called Porple. It offers a solution that, for the first time, makes it possible to automatically enhance data placement across a GPU. Through Porple, a GPU program´s data gets placed appropriately on memory on the fly, customized to the current input dataset. Moreover, when new memory systems arrive, it can easily adapt the placements accordingly. Experiments on three types of GPU systems show that Porple consistently finds optimal or near-optimal placement, yielding up to 2.93 times (1.75 times average on three generations of GPU) speedups compared to programmers´ decisions.
Keywords :
computational complexity; data handling; graphics processing units; storage management; GPU programming system; Porple software framework; complexity; modern GPU memory systems; near-optimal placement; portable data placement optimization; program performance; programmer decision; Benchmark testing; Complexity theory; Computer programs; Graphics processing units; Memory; Runtime; GPU; cache; compiler; data placement; hardware specification language;