说明:
1.转载请联系本人
2.代码在最后
问题描述
SpMV在许多科学计算程序中都有广泛的应用。
数据矩阵A是稀疏的,输入向量x和输出向量y是稠密的。
公式: y = Ax
实验要求
- 根据内存大小测不同规模矩阵的处理速度(GFLOPS/秒),并给出计算公式。
- 请计算系统的理论峰值,如果没有达到理论峰值,尝试给出原因。
方法
CUDA稀疏矩阵上没有通用的方法,一般来说对于SpMV问题有两个可以着手的点:
一个是存储方式,另一个是矩阵相乘的方式。
矩阵相乘部分可以参考上一个实验中一些常用的方法,而在稀疏矩阵的问题中,尤为突出的是存储方式的选取。通常来说有COO,CSR,DIA,ELL,HYB等方法,较常采用的是COO与CSR。
实验
1.实验环境
本机: CPU:i5-4210U
内存:8G OS: Windows10 1607
实验室:CPU: i7-7700K GPU:GTX 1080
内存:8G DDR4 OS:Ubuntu 16.04