Search papers, labs, and topics across Lattice.
This paper investigates memory layout strategies for optimizing data transfer between host and GPU in a Smoothed Particle Hydrodynamics (SPH) solver, addressing the growing inefficiency of memory transfer times relative to GPU compute speeds. By restructuring traditional array-of-struct data into a split array-of-struct format, the authors align data organization with kernel access patterns, significantly enhancing the efficiency of GPU-offloading processes. The proposed method achieves a reduction in data packing times by 20% to 40%, leading to an overall decrease in GPU-offloading time by 12% to 25%.
Splitting monolithic data structures can cut GPU-offloading times by up to 25%, revolutionizing how we handle memory transfers in high-performance computing.
The rise in GPU compute speed has outpaced improvements in host-to-device memory transfer speeds, despite the advent of shared-memory superchips. Consequently, memory transfer times now constitute an increasingly large fraction of total time-to-solution, compelling developers to compress GPU kernel input and output data into compact, minimal formats prior to GPU-offloading. This complements existing work on GPU- and compute-friendly data arrangements. We study a Smoothed Particle Hydrodynamics solver and propose memory layout strategies for host-side particle data that are particularly well-suited to GPU-offloading. Specifically, we advocate splitting classic array-of-struct data structures into a split array-of-struct arrangement, in which each logical struct decomposes into substructs determined by kernel read/write access patterns and attribute types. Splitting a monolithic particle struct into several bespoke, finer-grained structs can reduce the time required to pack data to and from buffers by ~20% - 40%, lowering total time spent on GPU-offloading by ~12% - 25%.