Abstract
The emergence of Internet of Things (IOT) is changing the ways of computing resources acquisition, from centralized cloud data centers to distributed pervasive edge nodes. To cope the small amount of diversity problem for IOT devices and applications, two research trends are investigated for the system design of edge nodes: heterogeneity and virtualization. In this paper, we consider the integration of those two important trends and present a virtualization system for embedded GPU architectures, called qCUDA-ARM. The design of qCUDA-ARM is based on the framework of qCUDA, a virtualization system for x86 servers. Because of the architectural differences between x86 servers and ARM based embedded systems, many subsystems of qCUDA-ARM, such as memory management, need to be redesigned. We evaluated the performance of qCUDA-ARM with three CUDA benchmarks and two real world applications. For computational intensive jobs, qCUDA-ARM can reach similar performance of the native system; and for memory bound programs, qCUDA-ARM can also have up to 90% performance of that of the native one.