学习日记-spmv(11)

文章探讨了在基于ARMv8的多核架构Phytium2000+上,针对NUMA架构优化稀疏矩阵向量乘法(SPMV)的方法。通过超图划分减少跨NUMA访问的带宽和延迟问题,重新组织矩阵以提高并行性能。实验显示,该方法能显著优于传统OpenMPSPMV实现,超图分区数量直接影响性能。
摘要由CSDN通过智能技术生成

SPMV稀疏矩阵向量乘笔记(11)

NUMA-Aware Optimization of Sparse Matrix-Vector Multiplication on ARMv8-based Many-Core Architectures 浅读

读论文论前需要了解的知识

  1. 多核(Muticore)与众核(Manycore)的区别
    manycoreandmuticore
    Manycore:core数量多,单线程的性能可能不高,为并行计算做了优化,高吞吐;
    Multicore:core数量较少,单线程性能高,为并行和串行计算都做了优化;
  2. NUMA架构
    numa

Introduction

  1. 提出当前numa架构是不可避免地选择,但是有一个问题是,当发生跨numa访问时,会发生明显的较低带宽和较大的延迟。
  2. 使用超图划分工具(hypergraph partitioning tools)将输入的矩阵进行重组(将非零元组织在对角线块上),然后将矩阵的按照行块方式分给不同的numa节点,并且分配对应的x。然后将线程绑定好numa节点进行spmv操作。

Background

  1. Phytium 2000+架构
    phutium
    右侧显示了Phytium 2000+的面板结构。可以看到,每个面板有8个小米核,每个核分别有一个32KB的私有L1缓存用于数据和指令。每四个核组成一个核心组,共享一个2MB的L2缓存。Phytium 2000+的L2缓存采用包容性策略,即L1中的cacheline也存在于L2中
  2. Hypergraph Partitioning超图划分
    (a)大小为16x16的原始稀疏矩阵a
    (b)矩阵a的超图H的行-网表示,以及H的四向分区
    ©矩阵a根据超图分区重新排序。可以看到,重新排序矩阵中的非零项被聚集到对角线块上,这意味着四个分区之间的连接数量减少了。
    Hypergraph Partitioning
  3. NUMA-Aware SpMV Alogrithm
    提出传统的spmv算法对x的访问并不规则,这会大大降低整体性能。针对于numa架构,将一组行以及这些行最需要的部分x存储在同一个numa节点上,这样就会带来一定程度的性能提升。
    spmv

Conclusions

提出了一种numa感知的SpMV方法,并在Phytium 2000+处理器上对15个代表性稀疏矩阵进行了基准测试。实验结果表明,方法可以显著优于经典的OpenMP SpMV方法,生成的超图分区的数量对SpMV性能有显著的影响。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值