Applications in High-Performance Computing (HPC) environments face challenges due to increasing complexity. Among them, the increasing usage of sparse data pushes the limits of data structures and programming models and hampers the efficient usage of existing, highly parallel hardware. The GraphBLAS specification tackles these challenges by proposing a set of data containers and primitives, coupled with a semantics based on abstract algebraic concepts: this allows multiple applications on sparse data to be described with a small set of primitives and benefit from the many optimizations of a compile-time-known algebraic specification. Among HPC applications, the High Performance Conjugate Gradient (HPCG) benchmark is an important representative of a large body of sparse workloads, and its structure poses several programmability and performance challenges. This work tackles them by proposing and evaluating an implementation on GraphBLAS of HPCG, highlighting the main changes to its kernels. The results for shared memory systems outperforms the reference, while results in distributed systems highlight fundamental limitations of GraphBLAS-compliant implementations, which suggests several future directions.
翻译:高性能计算(HPC)环境中的应用程序面临日益复杂带来的挑战。其中,稀疏数据使用量的增加对数据结构和编程模型提出了更高要求,并阻碍了现有高度并行硬件的高效利用。GraphBLAS规范通过提出一组数据容器和原语,并结合基于抽象代数概念的语义来应对这些挑战:这使得稀疏数据上的多个应用能够用少量原语描述,并受益于编译时已知代数规范的诸多优化。在HPC应用中,高性能共轭梯度(HPCG)基准测试是大量稀疏工作负载的重要代表,其结构带来了若干可编程性与性能挑战。本文通过提出并评估基于GraphBLAS的HPCG实现来应对这些挑战,重点阐述了其核函数的主要变更。共享内存系统的结果优于参考实现,而分布式系统的结果则揭示了符合GraphBLAS实现的根本局限性,这为未来研究指明了多个方向。