Techniques of computer systems that have been successfully deployed for dense regular workloads fall short of achieving their goals of scalability and efficiency when applied to irregular and dynamic applications. This is primarily due to the discontent between the multiple layers of the system design from hardware architecture, execution model, programming model, to data-structure and application code. The paper approaches this issue by addressing all layers of the system design. It presents and argues key design principles needed for scalable and efficient dynamic graph processing, and from which it builds: 1) a fine-grain memory driven architecture that supports asynchronous active messages, 2) a programming and execution model that allows spawning tasks from within the data-parallelism, 3) and a data-structure that parallelizes vertex object across many compute cells and yet provides a single programming abstraction to the data object. Simulated experimental results show performance gain of geomean $2.38 \times$ against an state-of-the-art similar system for graph traversals and yet being able to natively support dynamic graph processing. It uses programming abstractions of actions, introduces new dynamic graph storage scheme, and message delivery mechanisms with continuations that contain post-completion actions. Continuations seamlessly adjusts, prior or running, execution to mutations in the input graph and enable dynamic graph processing.
翻译:已成功部署于稠密规则工作负载的计算机系统技术,在应用于不规则动态应用时难以实现可扩展性与效率目标。这主要源于硬件架构、执行模型、编程模型、数据结构及应用程序代码等多层系统设计之间的不协调。本文通过覆盖系统设计所有层级来解决该问题。文章提出并论证了高效可扩展动态图处理所需的关键设计原则,并据此构建了:1)支持异步主动消息的细粒度内存驱动架构,2)允许在数据并行中生成任务的编程与执行模型,3)跨多个计算单元并行化顶点对象同时为数据对象提供统一编程抽象的数据结构。仿真实验结果表明,与同类先进系统相比,本系统在图遍历任务中实现了几何平均$2.38 \times$的性能提升,同时原生支持动态图处理。系统采用动作编程抽象,引入新型动态图存储方案,以及包含完成后动作的延续性消息传递机制。延续性可无缝调整进行中或预定的执行流程以适配输入图的变更,从而支持动态图处理。