Flexibility and the Evolution of GPU Applications and Systems

Dell’s Dr. Jeffrey Layton writes about the need for flexibility in the evolution of GPU applications and systems:

“In my interactions with a great number of HPC customers, I’ve found one thing to be true: writing code for GPUs is an evolutionary process. Actually writing any code follows an evolutionary process, but it is more pronounced with GPU applications because small changes can have a large impact on performance. In addition, most people are not used to thinking “SIMD” about their applications. Typically application development begins with only parts of the code running on the GPU and with a fairly high dependence upon the host-GPU data transfer performance (i.e. how quickly can you transfer data to the GPU over the PCIe bus and back). At this stage in the evolution of the application, the overall performance is not very good and is extremely dependent upon the data transfer performance between the host and the GPU, but this is only a start.”