  With the strong computation capability, NUMA-based multi-GPU system is a
promising candidate to provide sustainable and scalable performance for Virtual
Reality. However, the entire multi-GPU system is viewed as a single GPU which
ignores the data locality in VR rendering during the workload distribution,
leading to tremendous remote memory accesses among GPU models. By conducting
comprehensive characterizations on different kinds of parallel rendering
frameworks, we observe that distributing the rendering object along with its
required data per GPM can reduce the inter-GPM memory accesses. However, this
object-level rendering still faces two major challenges in NUMA-based multi-GPU
system: (1) the large data locality between the left and right views of the
same object and the data sharing among different objects and (2) the unbalanced
workloads induced by the software-level distribution and composition
mechanisms. To tackle these challenges, we propose object-oriented VR rendering
framework (OO-VR) that conducts the software and hardware co-optimization to
provide a NUMA friendly solution for VR multi-view rendering in NUMA-based
multi-GPU systems. We first propose an object-oriented VR programming model to
exploit the data sharing between two views of the same object and group objects
into batches based on their texture sharing levels. Then, we design an object
aware runtime batch distribution engine and distributed hardware composition
unit to achieve the balanced workloads among GPMs. Finally, evaluations on our
VR featured simulator show that OO-VR provides 1.58x overall performance
improvement and 76% inter-GPM memory traffic reduction over the
state-of-the-art multi-GPU systems. In addition, OO-VR provides NUMA friendly
performance scalability for the future larger multi-GPU scenarios with ever
increasing asymmetric bandwidth between local and remote memory.
