![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SPMV
文章平均质量分 50
荼图
主打一个摸鱼
展开
-
学习日记-spmv(26)
more。原创 2023-09-20 19:36:41 · 43 阅读 · 0 评论 -
学习日记-spmv(25)
more。原创 2023-09-20 19:34:25 · 41 阅读 · 0 评论 -
学习日记-spmv(24)
more。原创 2023-09-20 19:33:20 · 63 阅读 · 0 评论 -
学习日记-spmv(23)
more。原创 2023-09-20 19:29:50 · 121 阅读 · 0 评论 -
学习日记-spmv(20)
SPMV稀疏矩阵向量乘笔记(20)LightSpMV-FasterCSR-basedsparsematrix-vectormultiplicationonCUDA-enabledGPUs 浅读 (3)PARALLELIZA TION USING CUDA(写作思路)说明之前的spmv的静态行分配算法对于每行非零元个数变化较小的矩阵有较好的性能,但是当变化较大的时候,就会造成有些向量完成更早的情况。本文就此提出了两种动态行分配算法,分别是基于向量水平和基于wrap水平的。伪代码如图:向量水平的动态原创 2023-06-01 16:27:40 · 66 阅读 · 0 评论 -
学习日记-spmv(19)
memory footprint 内存占用。amortise V.摊销。原创 2023-06-01 16:23:49 · 70 阅读 · 0 评论 -
学习日记-spmv(18)
note that intrinsically 注意这一点。harness v.控制,利用n.马具,吊带。fine-grained a.细粒度的。analogous a.类似的。原创 2023-06-01 16:24:30 · 107 阅读 · 0 评论 -
学习日记-spmv(17)
SPMV稀疏矩阵向量乘笔记(17)CSR5:An Efficient Storage Format for Cross-Platform Sparse Matrix-Vector Multiplication 源码解读 (4)(avx2/512代码)昨天份遗留问题:empty_offset的生成问题,以为为啥不能直接生成empty_offset来替代y_offsetempty_offset是先计算bit_flag中T的位置,然后与row_ptr搜索来确定行数。而y_offset则是直接计算原创 2023-06-01 16:22:18 · 56 阅读 · 0 评论 -
学习日记-spmv(16)
在main中几乎一模一样,唯一不同的是就是多了个for循环,五次,里面A.asCSR5和A.asCSR依次执行,猜测是为了将部分数据放入cpu的缓存中,使得计算更快。其中的函数与cuda的基本一致,下面详细介绍spmv函数首先展示参数图。原创 2023-06-01 16:20:48 · 118 阅读 · 0 评论 -
学习日记-spmv(15)
SPMV稀疏矩阵向量乘笔记(15)CSR5:An Efficient Storage Format for Cross-Platform Sparse Matrix-Vector Multiplication 源码解读 (2)(cuda代码)main.cu->call_anonymouslib函数21-58行:将计算spmv所需要的数据复制到gpu上59-70行:将spmv相关操作封装成一个类,即anonymouslibHandle类,例如格式转换(csr->csr5)、进行spmv操原创 2023-06-01 16:18:55 · 87 阅读 · 0 评论 -
学习日记-spmv(14)
以下是示例输出,后续将不再展示:原创 2023-06-01 16:18:13 · 79 阅读 · 0 评论 -
学习日记-spmv(13)
SPMV稀疏矩阵向量乘笔记(13)TileSpMV: A Tiled Algorithm for Sparse Matrix-V ector Multiplication on GPUs 浅读 (2)TILESPMV两层存储结构分析第一层,tileptr数组,大小为tile的行数+1,代表tile的行偏移。tilecolldx数组,大小为tile的数量+1。tileNnz数组,大小为存储每个tile中的非零元个数差,可以理解为block-csr中的ptr。第二层,存储的是给tile的七种存储格原创 2023-05-06 16:22:37 · 109 阅读 · 0 评论 -
学习日记-spmv(12)
提出在gpu上优化并行SpMV的小块结构并不是一件简单的事情。原创 2023-05-06 16:21:06 · 120 阅读 · 0 评论 -
学习日记-spmv(12)
提出在gpu上优化并行SpMV的小块结构并不是一件简单的事情。原创 2023-05-06 16:18:53 · 92 阅读 · 0 评论 -
学习日记-spmv(11)
提出了一种numa感知的SpMV方法,并在Phytium 2000+处理器上对15个代表性稀疏矩阵进行了基准测试。实验结果表明,方法可以显著优于经典的OpenMP SpMV方法,生成的超图分区的数量对SpMV性能有显著的影响。原创 2023-05-06 16:15:51 · 113 阅读 · 0 评论 -
学习日记-spmv(10)
SPMV稀疏矩阵向量乘笔记(10)CSR5:An Efficient Storage Format for Cross-Platform Sparse Matrix-Vector Multiplication 浅读 (3)使用csr5格式进行spmv操作tile中的每一列都可以从bit_flag中提取信息,并将其局部数据中的段标记为三种颜色:(1)红色表示顶部未密封的子段,(2)绿色表示中间存在完全密封的子段,(3)蓝色表示底部未密封的子段。有一个例外,如果一个列从顶部和底部都被打开,它将被着色为红原创 2023-05-06 16:12:39 · 105 阅读 · 0 评论 -
学习日记-spmv(9)
SPMV稀疏矩阵向量乘笔记(9)CSR5:An Efficient Storage Format for Cross-Platform Sparse Matrix-Vector Multiplication 浅读 (2)PRELIMINARIES再给出了CSR5的存储格式的示例csr5存储格式设计思路将非零值数分为多个大小相同的2D的tile,tile的长和宽对应ω和σ,可以通过自行调整实现最佳效果添加了一个tile_ptr来描述每个tile的偏移量,用来与y_offset进行相加定原创 2023-05-06 16:11:17 · 123 阅读 · 0 评论 -
学习日记-spmv(8)
SPMV稀疏矩阵向量乘笔记(8)CSR5:An Efficient Storage Format for Cross-Platform Sparse Matrix-Vector Multiplication 浅读 (1)介绍部分分析row block和segment sum算法,row block算法虽然效率高,但是不能实现很好的负载均衡。而segment sum算法虽然可以实现很好的负载均衡,但是需要更为昂贵的全局同步和全局内存。并且提出上述两种方法都不可避免需要预处理的负载,因为都需要生成一定的原创 2023-05-05 22:03:43 · 98 阅读 · 0 评论 -
学习日记-spmv(7)
大矩阵分为小矩阵进行计算,可以进一步改善负载均衡的情况。原创 2023-05-05 22:01:45 · 96 阅读 · 0 评论 -
学习日记-spmv(6)
SPMV稀疏矩阵向量乘笔记(6)spmv之oski优化首先了解一下csr的spmv代码实现,其中val为非零值,ind为列索引,ptr为行指针。l是列值的一个索引,真正的列值是 。它和COO SpMV的一个明显区别是数据重用模式不同。 现在在内层循环 里被重用了,这意味着我们在代码生成时将其值放入一个寄存器中,然后在内层循环 中使用该寄存器而不用重复访问内存。此时内存循环每轮只需要3次memory loads。基于BSCR的spmv代码实现首先展示伪代码:下面是C语言代码:OSKI希望转载 2023-05-05 21:59:37 · 106 阅读 · 0 评论 -
学习日记-spmv(5)
简述了一下spmv的由来以及重要性和spmv的历史解决办法,例如非零填充等。然后介绍了gpgpu的发展以及解决了许多复杂的算法。gpgpu是simt结构,即单指令多线程结构。文章主要是对不同的存储格式做出了简单的介绍与性能测试。原创 2023-05-05 21:55:01 · 176 阅读 · 0 评论 -
学习日记-spmv(4)
介绍了该论文的核心,改进的分段求和算法。原创 2023-05-05 21:53:40 · 89 阅读 · 1 评论 -
学习日记-spmv(3)
SPMV稀疏矩阵向量乘笔记(3)Speculative Segmented Sum for Sparse Matrix-V ector Multiplication on Heterogeneous Processors 浅读(2)介绍了两个不同的异构处理器,一种是最后一级cache是独立的,即cpu与gpu各自有一个cache。另外一种是最后一级cache是共享的,即cpu与gpu共享。如图提出协同处理器与异构处理器的区别。其中最大的区别就是协同处理器说到底cpu与gpu之间的数据传输还是用pc原创 2023-05-05 21:52:57 · 146 阅读 · 1 评论 -
学习日记-spmv(2)
【代码】学习日记-spmv(2)原创 2023-05-05 21:51:00 · 130 阅读 · 1 评论 -
学习日记-spmv(1)
SPMV稀疏矩阵向量乘笔记(1)存储格式COO格式三元组来表示,分别是(行号,列号,数值)。CSR格式三类数据来表达:行偏移,数值所属列号,数值。通常,行偏移是最难理解的,其中一种比较好理解是前n行有多少个非零元素(n就是索引,从0开始),例如当n=1,值为2表示前1行有两个元素,当n=2,值为4表示前2行有四个非零元素。CSC格式同理,第二种为行便宜,该种为列偏移,不过多解释。ELLPACK (ELL)用两个和原始矩阵相同行数的矩阵来存:第一个矩阵存的是第二个矩阵元素对应的原始矩阵原创 2023-05-05 21:44:01 · 270 阅读 · 1 评论