🤖 AI Summary
Data transfer between the GPU and host memory is significantly slower than computational speed, becoming a major performance bottleneck for SPH solvers. To address this, this work proposes a host-side particle memory layout optimization tailored for GPU offloading. By analyzing GPU kernel access patterns and particle attribute types, the conventional Array-of-Structures (AoS) layout is decomposed into multiple fine-grained sub-structures (Split AoS), combined with a data compression strategy to substantially reduce the overhead of data reorganization before and after transfers. Experimental results demonstrate that the proposed approach reduces data packing time by 20%–40% and decreases overall GPU offloading latency by 12%–25%, thereby significantly enhancing heterogeneous computing efficiency.
📝 Abstract
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%.