说明:收录25万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210522339.2 (22)申请日 2022.05.13 (71)申请人 吉林大学 地址 130012 吉林省长 春市前进大街269 9 号 (72)发明人 张雪松 闫昭 赫枫龄 雷新丽  马琳  (74)专利代理 机构 北京京万通知识产权代理有 限公司 1 1440 专利代理师 许天易 (51)Int.Cl. G06F 9/50(2006.01) G06F 12/0877(2016.01) G06T 1/20(2006.01) (54)发明名称 一种用于仿真系统的基于GPU的中小型稠 密 矩阵的批量并行LU分解方法 (57)摘要 本发明针对仿真系统的小中型稠密矩阵实 现一种基于GPU的高性能批量并行LU分解方法, 该方法包括: S1、 计算仿真系统的模型单元在每 个时间步的雅可比矩阵, 并将这些矩阵作为子矩 阵, 并拼接为大矩阵H; S2、 对每个子矩阵内部分 块, 并按照分块的大小为每个子矩阵分配GPU线 程组; S3、 所述 GPU线程组按照对角顺序从左上到 右下, 依次完成每个对角块内所有列的主元选 取、 对角块所在行右侧块的更新、 对角块内部列 与主元列交换, 以及对角块所在列下方和右下方 的所有分块数据更新, 从而完成对大矩阵H内的 所有子矩阵的LU分解。 本发明能随着批量数量的 增加, 性能以近似线性的趋势增加, 并且在隐式 求解包含大批量小型常微分方程组的模型时, 能 够加快求 解速度, 有效缩短仿真时间。 权利要求书2页 说明书7页 附图4页 CN 114911619 A 2022.08.16 CN 114911619 A 1.一种用于仿真系统的基于GPU的中小型稠密矩阵的批量LU分解方法, 其特征在于, 包 括: S1、 计算仿真系统 的模型单元在每个时间步的雅可比矩阵, 并将这些矩阵作为子矩阵, 并拼接为大矩阵H; S2、 对每个子矩阵内部分块, 并按照分块的大小为每 个子矩阵分配GPU 线程组; S3、 所述GPU线程组按照对角顺序从左上到右下, 依次完成每个对角块 内所有列的主元 选取、 对角块所在行右侧块的更新、 对角块内部列与主 元列交换, 以及 对角块所在列下方和 右下方的所有分块数据更新, 从而完成对大矩阵H内的所有子矩阵的LU分解。 2.根据权利要求1所述的批量LU分解方法, 其特征在于, 在步骤S1中, 所述仿真系统具 有n个模型单元, 所述雅可比矩阵为m阶中小型稠密矩阵Hi, i的范围是[0, n ‑1], 其中, m的获 取方法为: 将当前待求解的所有模型单元的维度向上扩充到2的整数次幂m(即雅可比矩阵 扩展到m阶), 对于增 加的行和列, 除了对角线元 素的值为1外, 其 他全部用0填充。 3.根据权利要求1所述的批量 LU分解方法, 其特 征在于, 在步骤S2中, 包括: S21、 将子矩阵Hi分为若干子块, 以保证后续的处理 中, 线程组能够一次性从全局内存读 入整个分块内的数据, 减少全局内存的访问次数; S22、 按照分块的大小为子矩阵Hi分配对应数量的GPU 线程, 构成线程组Groupi。 4.根据权利要求3所述的批量LU分解方法, 其特征在于, 将子矩阵Hi分为若干子块的方 法包括: 如果m大于等于16时, 设置块大小bl ocksize为8或16; 如果m小于16, 则将整个子矩阵作为 一块, 此时块大小bl ocksize=m。 5.根据权利要求2所述的批量 LU分解方法, 其特 征在于, 在步骤S3中, 具体步骤 包括: S31、 每个线程组Groupi选定子矩阵Hi内索引为j的对角块Bj,j, 确定Bj,j内所有列对应的 主元列, 并对位于Bj,j右侧所在行 上的所有分块进行 更新; 其中, j初始化 为0; S32、 将得到的所有 主元列与对角块Bj,j内部对应的列互换位置; S33、 对位于对角块Bj,j所在列下 方的所有分块进行 更新; S34、 对位于对角块Bj,j右下方的所有分块进行 更新; S35、 如果对角块Bj,j是子矩阵Hi中的右下角分块, 批量并行LU分解结束, 输出大矩阵H, 其中, 每个子矩阵Hi都由Li和Ui构成, 分别是单位下三角矩阵和上三角矩阵, 用于后续的线 性方程组快速求 解; 否则, 令j=j+1, 跳转到步骤S31, 继续处 理下一个分块。 6.根据权利要求5所述的批量 LU分解方法, 其特 征在于, 步骤S31包括: S311: 初始化维度为m的一维矩阵Toi, 令Toi[l]=m,0 ≤l<m, 其中, 数组索引l对应子矩阵Hi的列序号, Toi[l]用于记录序号为l的列, 其最终的主元列序 号; S312: 线程组从当前块Bj,j开始, 并行读取块 内第p行的所有元素, 存入线程 内部的缓存 中; 其中, p按照子矩阵Hi的行索引计算, 初始化为j ×blocksize; 在此步骤中, 由于块Bj,j的 行元素之间在全局内存中紧密排列, GPU仅需发射一次指令即可实现线程组的全部数据读 取, 达到了内存合并访问的效果; 其中, j ×blocksize≤p<(j+1) ×blocksize); S313: 线程组继续并行读取Bj,j右侧相邻的下一分块中p行所有的数据, 并与缓存中的 数据比较, 将具有较大绝对值的元素及其所在列序号保存在内部缓存中; 此过程持续迭代,权 利 要 求 书 1/2 页 2 CN 114911619 A 2直到子矩阵最后一个块数据被读取; S314: 比较线程组内缓存的所有元素, 取绝对值最大的元素所对应的列q作为列p对应 的主元列, 更新元 素Toi[p]=q; S315: 对子矩阵Hi中的当前行p, 从列索引j ×blocksiz e开始, 遍历行中后续的所有元素 如果Toi[l]>q, 则执 行如下运 算: 其中, 为元素 对应的真正主元; S316: 对于P1区域的每 个元素 的列索引y, 如果Toi[y]>q, 则执 行如下消元运 算: 其中, P1区域为位于子矩阵Hi的[p+1,(j+1) ×blocksize ‑1]行和[j×blocksize,m ‑1] 列之间的矩阵; p+1≤x<(j+1) ×blocksize,j ×blocksize≤y<m; S317: 如果p是块Bj,j内的最后一行, 步骤S31结束, 此时Bj,j中包含了当前分块内的LU分 解结果Lj,j和Uj,j; 否则, 令p=p+1, 跳转到步骤S312, 继续处 理下一行。 7.根据权利要求5所述的批量LU分解方法, 其特征在于, 在步骤S32中, 对于Bj,j内的任 意一列p, 线程组内的第p号线程执 行列colp与列 之间的元 素交换。 8.根据权利 要求5所述的批量LU分解方法, 其特征在于, 在步骤S33中, 设P2区域为位于 子矩阵Hi的[(j+1) ×blocksize,m ‑1]行和[j ×blocksize,(j+1) ×blocksize ‑1]列之间的 矩阵, 对于其中的每 个元素 执行如下运 算: 其中, (j+1) ×blocksize≤x<m,j ×blocksize≤y<(j+1) ×blocksize。 9.根据权利 要求5所述的批量LU分解方法, 其特征在于, 在步骤S34中, 设P3区域为位于 子矩阵Hi的[(j+1) ×blocksize,m ‑1]行和[(j+1) ×blocksize,m ‑1]列之间的矩阵; P1和P3 区域依据blocksize进一步划分为多个子区域, 线程组Groupi依次对其中的任意子区域P1t、 P3t,0≤t<k‑j, 进行如下处 理: 线程组Groupi中的每个GPU线程Ty,0≤y<blocksize, 执 行如下运 算: 读入子区域P1t中序号为的y列向量A到线程的缓存中; 计算子区域P3t中序号为的y列向量D中的每 个元素: D[x]=D[x]‑CxA   (4) 其中, (j+1) ×blocksize≤x<m。 10.根据权利要求5所述的批量LU分解方法, 其特征在于, 在步骤S35中, 判断当前处理 的分块Bj,j是否子矩阵Hi中的右下角分块, 如果是, 批量并行LU分解结束; 否则, 令j=j+1, 跳转到步骤S31, 继续处 理下一个分块。权 利 要 求 书 2/2 页 3 CN 114911619 A 3

.PDF文档 专利 一种用于仿真系统的基于GPU的中小型稠密矩阵的批量并行LU分解方法

文档预览
中文文档 14 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共14页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种用于仿真系统的基于GPU的中小型稠密矩阵的批量并行LU分解方法 第 1 页 专利 一种用于仿真系统的基于GPU的中小型稠密矩阵的批量并行LU分解方法 第 2 页 专利 一种用于仿真系统的基于GPU的中小型稠密矩阵的批量并行LU分解方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 07:13:09上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。