一种基于强化学习的稀疏矩阵向量乘的程序设计系统
- 国知局
- 2024-10-15 09:38:01
本发明涉及计算,具体来说涉及稀疏矩阵向量乘领域,更具体地说,涉及一种基于强化学习的稀疏矩阵向量乘的程序设计系统。
背景技术:
1、在矩阵中,若数值为0的元素(以下简称零元)的数目远远多于非0元素(简称非零元)的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵(sparse matrix)。一些文献中,将零元的数目占大多数的矩阵称为稀疏矩阵;与之相反,若非零元的数目占大多数时,则称该矩阵为稠密矩阵。
2、稀疏矩阵-向量乘法(sparse matrix-vector multiplication,简称spmv)是系统架构中的关键操作,应用于多个计算领域,从科学模拟、图分析到机器学习。鉴于许多大型矩阵的稀疏性质(矩阵中大多数元素为零),有效地执行spmv操作成为一个重大挑战。这个挑战不仅存在于计算效率上,还涉及存储、内存访问模式和数据局部性。
3、spmv的优化空间广阔且多面,研究者们进行了大量努力来优化稀疏矩阵-向量乘法的性能。这些努力包括提出新的稀疏矩阵格式和采用多种性能优化技术。尽管已经提出了许多稀疏矩阵存储格式,从基本格式(如coo、压缩稀疏行csr、对角线存储法dia)到复杂的设计格式(如csr5、yaspmv)。
4、然而,不同的稀疏矩阵具有不同的稀疏模式,一个矩阵的最优策略可能对另一个矩阵来说是次优的。因此,应用自动调优,对于不同的稀疏矩阵选择不同的格式和程序优化策略也是众多工作的重点。此外,优化spmv不仅关于稀疏矩阵本身,还涉及硬件细节、内存结构和并行处理能力的考量,如多核cpu、图形处理单元(gpu)、intel xeon phi加速器和现场可编程门阵列(fpga)。
5、目前,众多工作在稀疏矩阵自动调优方面的局限性仍然来自于:在庞大的格式和优化策略空间中进行受限的设计探索。目前已经提出了众多的格式和程序优化策略,并且每种选择内部的参数选项很多。但是,现有技术存在以下技术问题:
6、1)由于现有的程序优化策略仅根据稀疏矩阵原本的数据形式来分析所有阶段的策略,由于考虑的因素不够全面,中后阶段的策略的准确性有待提高;
7、2)由于现有技术存在以上缺点,目前各个研究者倾向于只注重对单个阶段的决策手段进行优化,而各个阶段得到的策略合并使用时又可能存在其他问题,难以提供一个整体的决策手段来为稀疏矩阵向量乘设计程序。
8、需要说明的是:本背景技术仅用于介绍本发明的相关信息,以便于帮助理解本发明的技术方案,但并不意味着相关信息必然是现有技术。相关信息与本发明方案一同提交和公开,在没有证据表明相关信息已在本发明的申请日以前公开的情况下,相关信息不应被视为现有技术。
技术实现思路
1、因此,本发明的目的在于克服上述现有技术的缺陷,提供一种基于强化学习的稀疏矩阵向量乘的程序设计系统。
2、本发明的目的是通过以下技术方案实现的:
3、根据本发明的第一方面,提供一种基于强化学习的稀疏矩阵向量乘的程序设计系统,用于为在具有层次化结构的计算硬件构建所述程序,所述系统包括:稀疏矩阵表达模块,被配置为:在多个决策阶段中的每个阶段,确定稀疏矩阵对应的阶段表达,各阶段表达包括用于指示稀疏矩阵在当前阶段在计算硬件的层次计算资源中分配信息的层次映射、非零元的绝对位置和相对位置;强化学习模块,被配置为:在第i阶段,利用神经网络从第i-1阶段的阶段表达中提取阶段特征,根据所述阶段特征确定第i阶段的策略和预测价值;获取基于蒙特卡洛树搜索算法为该稀疏矩阵维护的搜索树,并基于搜索树、策略和预测价值,确定第i阶段采取的动作;根据所有阶段采取的动作,构建引导稀疏矩阵向量乘在所述计算硬件上完成计算的程序代码,其中,i>0。本发明通过强化学习和统一格式的阶段表达对应的阶段特征预测策略和价值,再根据策略和价值进行蒙特卡洛树搜索算法,确定每个阶段采取的动作,从而高效地生成的高性能程序,相比于之前工作的手工设计格式和预定义模板,能够针对稀疏矩阵的不同特征特制的选择不同的优化策略,实现了性能的提升。
4、在本发明的一些实施例中,层次映射包括:内存映射,用于指示稀疏矩阵的每行非零元对应的内存索引;块映射,用于指示各个线程块分配到的非零元的内存索引;线程映射,用于指示各个线程分配到的非零元的内存索引。
5、在本发明的一些实施例中,多个决策阶段包括:第1阶段,用于根据初始表达预测策略和价值,第1阶段预测的策略为对稀疏矩阵的各行进行重排序的概率;第2阶段,用于根据第1阶段的阶段表达预测策略和价值,第2阶段预测的策略为对第1阶段得到的稀疏矩阵进行压缩的概率和填充的概率;第3阶段,用于根据第2阶段的阶段表达预测策略和价值,第3阶段预测的策略为对第2阶段得到的稀疏矩阵进行线程块按行非零元分配时的每种分配粒度的概率;第4阶段,用于根据第3阶段的阶段表达预测策略和价值,第4阶段预测的策略为对每个线程块中的数据进行线程按行非零元分配时的每种分配粒度的概率和线程按非零元数量分配时的每种分配粒度的概率;第5阶段,用于根据第4阶段的阶段表达预测策略和价值,第5阶段预测的策略为从预设的多种归约方式中选择每种归约方式的概率。
6、在本发明的一些实施例中,稀疏矩阵表达模块,被配置为:为稀疏矩阵确定初始表达,其中,层次映射为缺省值,非零元的绝对位置为稀疏矩阵中非零元所在行的行号,非零元的相对位置为稀疏矩阵中非零元所在列的列号,将初始表达视为第0阶段的阶段表达;从初始表达开始,根据第i阶段所采取的动作对第i-1阶段表达中的层次映射、非零元的绝对位置和/或相对位置的影响,设置第i阶段的阶段表达。
7、在本发明的一些实施例中,每颗搜索树中的奖励根据程序代码被执行后所获得的实际性能与该搜索树对应的历史参考性能来确定,其中,当所述实际性能超过历史参考性能时,授予正向奖励,否则授予负向奖励。
8、在本发明的一些实施例中,每颗搜索树对应的历史参考性能按照以下方式动态确定:为该搜索树维护一个专属的历史性能记录,以收集利用该搜索树构建的程序代码被执行后所获得的实际性能;从所述历史性能记录中,确定最接近预设的α分位数的值作为历史参考性能。
9、在本发明的一些实施例中,预设的α分位数为第75百分位数。
10、在本发明的一些实施例中,强化学习模块,还被配置为:维护用于收集程序代码被执行后对应样本的经验池,每个样本包括:稀疏矩阵、搜索树上记录的程序代码被执行后的实际性能以及基于搜索树为该稀疏矩阵确定的各阶段的动作概率;为每个样本关联其对应的损失,在经验池中设置多个优先级的存储区,每个存储区对应一个损失范围,越高优先级的存储区所对应的损失范围的下界越大;基于所述多个优先级的存储区,差异化地从各存储区采样样本进行训练。
11、在本发明的一些实施例中,差异化地从各存储区采样样本进行训练包括:为越高优先级的存储区设置越大的采样概率,按照为每个存储区设置的采样概率,从经验池采样一个批次的样本用于训练。
12、在本发明的一些实施例中,强化学习模块被配置为:为具有相同非零元分布形态的稀疏矩阵维护同一颗搜索树。
本文地址:https://www.jishuxx.com/zhuanli/20241015/314803.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表