We evaluate optimized parallel sparse matrix-vector operations for several representative application areas on widespread multicore-based cluster configurations. First the single-socket baseline performance is analyzed and modeled with respect to basic architectural properties of standard multicore chips. Beyond the single node, the performance of parallel sparse matrix-vector operations is often limited by communication overhead. Starting from the observation that nonblocking MPI is not able to hide communication cost using standard MPI implementations, we demonstrate that explicit overlap of communication and computation can be achieved by using a dedicated communication thread, which may run on a virtual core. Moreover we identify performance benefits of hybrid MPI/OpenMP programming due to improved load balancing even without explicit communication overlap. We compare performance results for pure MPI, the widely used "vector-like" hybrid programming strategies, and explicit overlap on a modern multicore-based cluster and a Cray XE6 system.
Performance Modeling of Streaming Kernels and Sparse Matrix-Vector Multiplication on A64FX
A64 FX CPU是目前Top500排行榜上排名第一的超级计算机。虽然它是一个传统的基于缓存的多核处理器,但其峰值性能和内存带宽可与加速器设备相媲美。为这样一个新的体系结构生成高效的代码需要很好地理解其性能特性。利用这些功能,我们构建的执行缓存存储器(ECM)的性能模型的A64 FX处理器在FX 700超级计算机,并验证它使用流循环。我们还确定架构的特点,并获得优化提示。将ECM模型应用于稀疏矩阵向量乘法(SpMV),我们激发了CRS矩阵存储格式不合适的原因以及SELL-C-sigma格式如何通过适当的代码优化实现SpMV的带宽饱和。
OpSparse: a Highly Optimized Framework for Sparse General Matrix Multiplication on GPUs
稀疏广义矩阵乘法(SpGEMM)在许多实际应用中是一个重要而昂贵的计算原语。由于SpGEMM固有的不规则性及其输入矩阵的多样性,在现代处理器(如GPU)上开发高性能SpGEMM实现具有挑战性。最先进的SpGEMM库(即,$nsparse$和$spECK$)采用若干算法来解决全局负载平衡、局部负载平衡和结果矩阵的分配的挑战。虽然这些库专注于SpGEMM的高级算法设计,但它们忽略了几个低级别的特定于体系结构的优化,这导致其库中的实现效率低下。在本文中,我们将其低效的实现分为七类。基于我们的观察,我们提出了一个高度优化的SpGEMM库称为$OpSparse$。$OpSparse$中的优化包括1)通过提高共享存储器的利用率来优化装仓方法,2)通过减少对散列表的访问来优化散列方法,3)通过设置适当的装仓范围来提高散列方法中的散列冲突率和硬件利用率之间的折衷,4)通过最小化元数据的全局存储器使用来减少全局存储器利用的开销,以及5)通过将全局存储器分配与内核执行重叠来提高执行并行性。在Nvidia Tesla V100 GPU上使用26个常用矩阵进行的性能评估表明,$OpSparse$分别在三个最先进的库($cuSPARSE$、$nsparse$和$spECK$)上实现了高达$27.8\times$、$1.81\times$和$2.04\times$的性能加速。
Achieving Efficient Strong Scaling with PETSc using Hybrid MPI/OpenMP Optimisation
在现代高性能平台中,处理元件数量的增加和存储器与核心比率的降低使得高效的强缩放成为数值算法的关键要求。为了在大规模并行系统上实现有效的可扩展性,科学软件必须在整个堆栈上发展,以利用现代体系结构中暴露的多级并行性。在本文中,我们演示了使用混合MPI/OpenMP并行优化并行稀疏矩阵向量乘法在PETSc,广泛使用的科学图书馆的可扩展的偏微分方程的解决方案。使用Fluidity生成的大矩阵,一个开源的CFD应用程序代码,使用PETSc作为其线性求解器引擎,我们使用基于任务的并行性显式通信重叠的效果进行评估,并展示如何进一步提高性能显式负载均衡线程在MPI进程。我们展示了显着的加速比纯MPI模式和有效的强大的缩放稀疏矩阵向量乘法富士通PRIMEHPC FX 10和Cray XE 6系统。
Sparse matrix-vector multiplication on GPGPU clusters: A new storage format and a scalable implementation
Erlangen Regional Computing Center(埃尔朗根区域计算中心);Ernst-Moritz-Arndt University of Greifswald(格赖夫斯瓦尔德恩斯特·莫里茨·阿恩特大学);German Aerospace Center (DLR)(德国航空航天中心);Los Alamos National Laboratory(洛斯阿拉莫斯国家实验室)