Graph computing is widely used in real scenarios such as transportation, social networking, and biological information network analysis, and GPU is a commonly used graph computing acceleration tool. However, the size of data sets in the real world often exceeds the GPU memory load, and data transfer between GPU and CPU is frequent, resulting in a large amount of GPU time in busy waiting, which seriously affects program performance. We found that during graph computing, applications always sequentially scan graph data within a large memory access range. Based on this finding, we divided GPU memory to store reusable data and other data separately to optimize the memory access behavior of the program. Based on this, we propose a general and easy-to-extend graph computing framework.
We used Intel oneAPI as a programming tool to implement the framework’s prototype OneGraph.