Unified CPU–GPU Memory Performance Across Edge, Consumer, and Datacenter Platforms: Three Case Studies
Abstract
Unified memory allows a central processing unit (CPU) and a graphics processing unit (GPU) to share data, simplifying the development of applications that use both processors. However, a shared memory interface does not eliminate the performance effects of where data reside, how often they are reused, or how the processors coordinate their work. We study these effects on three systems: NVIDIA Jetson Orin Nano for edge computing, Apple M4 for consumer computing, and NVIDIA Grace Hopper GH200 for datacenter computing. Targeted experiments examine memory allocation, data access, and CPU–GPU interaction, distinguishing GPU computation from the surrounding preparation, transfer, and synchronization work. On Orin, allocation choices have a modest effect on the tested workload that processes data in sequence. On M4, faster GPU access must be weighed against the preparation it requires; the shared-update test also shows that access to the same memory does not ensure correct simultaneous updates. GH200 illustrates why high data-transfer throughput and the delay when one data access must finish before the next can begin must be considered separately. These findings describe the tested workloads rather than establish a performance ranking of the three systems. Across the case studies, the broader lesson is to choose memory policies around how an application produces, reuses, and consumes data and to evaluate the complete operation rather than GPU execution alone. We translate these lessons into guidance for application developers and for tools that generate and tune code across different hardware.