Abstract: To improve programmability and productivity, recent GPUs adopt a virtual memory address space shared with CPUs (e.g., NVIDIA’s unified memory). Unified memory migrates the data management burden from programmers to system software and hardware, and enables GPUs to address datasets that exceed their memory capacity. Our experiments show that while the implicit data transfer of unified memory may bring better data movement efficiency, page fault overhead and data thrashing can erase its benefits. In this paper, we propose several user-transparent unified memory management schemes to achieve adaptive implicit and explicit data transfer and prevent data thrashing. Unlike previous approaches which mostly rely on the runtime and thus suﬀer from large overhead, we demonstrate the benefits of exploiting key information from compiler analyses. We implement the proposed schemes to improve OpenMP GPU offloading performance. Our evaluation shows that our schemes improve the GPU performance and memory efficiency significantly.
Back to Technical Papers Archive Listing