中文引用格式: 黄旭东,洪泽,陈振娇. 稀疏矩阵在C66x上的应用及优化[J]. 电子技术应用,2024,50(11):23-27.
英文引用格式: Huang Xudong,Hong Ze,Chen Zhenjiao. Application and optimization of sparse matrix vector multiplication on C66x[J]. Application of Electronic Technique,2024,50(11):23-27.
引言
在机器学习和边缘计算中,由于样本数量巨大,大部分数据集都是转换成稀疏矩阵进行数据处理。问题求解通常转换成解线性代数方程组AX=B,其中A大部分是稀疏矩阵,因此SpMV 在求解过程中被重复调用,SpMV 的计算效率直接影响了整体求解效率[1]。李亿渊实现了SpMV 在申威SW26010处理器上的性能优化[2-3];吴志勇在FPGA上使用并行计算的方式对稀疏矩阵求解进行加速[4];谈兆年在异构计算平台上完成了SpMV划分优化算法[5];上述文献方法SpMV 多集中于FPGA、CPU和GPU上的实现和优化,而在高性能DSP C66x内核上的研究还未见报道,因此开展此项工作具有重要意义。
稀疏矩阵具有自身特殊性,矩阵中大部分元素都是0,且0元素分布具有不规则性。大规模矩阵计算大部分都是稀疏矩阵计算,且稀疏度都在90%甚至99%以上,因此高效的稀疏矩阵压缩格式更利于减少稀疏矩阵计算的空间复杂度[6]。如COO压缩格式利用行号、列和数值三元组来表示,压缩方式简单但不利于减少空间复杂度[7]。ELLPACK压缩格式用两个和原始矩阵相同行数的矩阵来存储数据,DIA对角线压缩法,按对角线方式存储,列代表对角线,行代表行[8]。这两种压缩格式利于实现稀疏矩阵的应用迭代法(如共轭梯度法),但是抵抗稀疏矩阵的随机性较弱。CSR采用整体编码格式,利用数值、列号以及行偏移来表示数据,比起DIA和ELLPACK格式,通用性更高且灵活。
C66x内核采用VLIW构架,集成了单精度和双精度的浮点运算单元,可以实现定点和浮点的操作。C66x 内核可同时运行多达八项浮点乘法运算,加之高达1.25 GHz的时钟频率,单核浮点峰值可以达到20 GFLOPS[9]。目前C66x已经广泛应用到电力控制,机器视觉,机器人等领域。
本文分析COO、ELLPACK、DIA和CSR压缩格式的优缺点,利用C66x的软件流水和SIMD实现SpMV_CSR 算法的性能优化。通过改变稀疏矩阵的规模和稠密度计算优化后与优化前的加速比,比较C66x内核SpMV_CSR 优化效果[10]。
本文详细内容请下载:
https://www.chinaaet.com/resource/share/2000006205
作者信息:
黄旭东,洪泽,陈振娇
(中国电子科技集团公司第五十八研究所,江苏 无锡214035)