[发明专利]一种基于CSR格式的高性能稀疏矩阵向量乘法计算方法在审
申请号: | 202110636177.0 | 申请日: | 2021-06-08 |
公开(公告)号: | CN113377534A | 公开(公告)日: | 2021-09-10 |
发明(设计)人: | 王超;张加浩;左岳;王寅初;周亦非 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/52 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 孙峰 |
地址: | 211189 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 csr 格式 性能 稀疏 矩阵 向量 乘法 计算方法 | ||
1.一种基于CSR格式的高性能稀疏矩阵向量乘法计算方法,其特征在于,包括如下步骤:
步骤S1、采用最简高效循环结构,进行空间局部性优化,循环效率优化与访存效率优化;
步骤S2、引入局部变量减少冗余访存和冗余计算;
步骤S3、在利用多线程加快仿真结果方面,借鉴线程池的基本思想并对线程池进行改进;
步骤S4、采用适应性的亲和性设置。
2.根据权利要求1所述的一种基于CSR格式的高性能稀疏矩阵向量乘法计算方法,其特征在于,所述采用最简高效循环结构具体包括:
步骤S101、将所有计算整合到一个循环结构中,用以减少冗余计算;
步骤S102、按压缩矩阵元素存储顺序访存;
步骤S103、循环步长为1。
3.根据权利要求2所述的一种基于CSR格式的高性能稀疏矩阵向量乘法计算方法,其特征在于,所述步骤S2具体包括:在循环内部使用局部变量保存中间结果,然后将中间结果保存在寄存器,计算结束后再写入内存;
在循环外提前计算循环内的中间结果,在循环内使用临时变量直接使用这一中间结果。
4.根据权利要求3所述的一种基于CSR格式的高性能稀疏矩阵向量乘法计算方法,其特征在于,所述步骤S3具体包括:
步骤S301、创建代表矩阵索引的全局变量与互斥锁,并定义结构体;
步骤S302、调用仿真任务模块时将全局变量赋初值;
步骤S303、利用CPU查看指令获得服务器的CPU逻辑核个数;
步骤S304、判断要执行的矩阵数目N与硬件支持线程数目的大小;
若小于,即创建N个线程,一个线程去执行一个矩阵,直接调用相应的多线程函数,执行计算任务;
若大于或者等于,则向下执行;
步骤S305、创建服务器支持的最大线程并为每个线程所执行的函数传递所需要的参数;
步骤S306、开辟线程并执行线程函数;
步骤S307、在开辟的线程中,线程函数将传递过来的参数进行解析操作;
步骤S308、每个线程去抢夺互斥锁,获得锁的线程判断全局变量是否大于要执行的矩阵数N,其中,N代表所有要执行的矩阵数目;
若大于,该线程释放互斥锁并打破循环,结束仿真;
若小于或者等于,将全局变量赋值给某一局部变量,释放互斥锁,并执行计算任务;
步骤S309、待所有线程都结束任务后,主线程结束,完成N个矩阵仿真任务。
5.根据权利要求4所述的一种基于CSR格式的高性能稀疏矩阵向量乘法计算方法,其特征在于,所述步骤S4具体包括:
步骤S401、设置并准备位掩码;
步骤S402、将位掩码清零;
步骤S403、将第i个逻辑core设置在位掩码上;
步骤S404、将线程绑定在设置好的位掩码上;
步骤S405、判断亲和性设置是否成功,
若不成功,则打印亲和性设置异常信息,
若成功,成功继续执行上述的操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110636177.0/1.html,转载请声明来源钻瓜专利网。