发明名称 基于线程构造块的超大规模矩阵多核并行克劳特分解方法
摘要 本发明涉及基于线程构造块的超大规模矩阵多核并行克劳特分解方法,该分解方法包括以下步骤:1)将传统Crout方法中可以并行计算的部分改写为符合TBB需要的规范类;2)设置问题初始值;3)进入Crout方法的行循环;4)调用parallel_reduce并行模块类,将每一行的最大主元保存在临时向量中,同时计算并保存比例因子;5)进入Crout方法的列循环;6)确定新的主元及比例因子,修改TINY,每一行除以主元;7)完成超大规模矩阵分解,得到因部分主元法而改变了的行列排列次序。与现有技术相比,本发明具有能够大幅度提高矩阵LU分解的运行效率、且能跨平台、可扩展、应用广泛等优点。
申请公布号 CN102486727B 申请公布日期 2014.10.22
申请号 CN201010571856.6 申请日期 2010.12.03
申请人 同济大学 发明人 马健;张丽岩;李克平;孙剑
分类号 G06F9/44(2006.01)I;G06F17/16(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 上海科盛知识产权代理有限公司 31225 代理人 赵继明
主权项 基于线程构造块的超大规模矩阵多核并行克劳特分解方法,其特征在于,该分解方法包括以下步骤:1)线程构造块并行计算平台的安装与环境设置;2)分析并抽取传统克劳特方法中可以并行计算的部分,利用线程构造块并行模板类改写为符合线程构造块需要的规范类;3)设置问题初始值;4)进入克劳特方法的行循环;5)调用符合线程构造块需要的规范类,将每一行的最大主元保存在临时向量中,同时计算并保存比例因子;6)进入克劳特方法的列循环;7)确定新的主元及比例因子,修改TINY,每一行除以主元,判断列循环是否结束,如果判断为否则转到步骤6),判断行循环是否结束,如果判断为否则转到步骤4);8)运行结束,完成超大规模矩阵分解,得到因部分主元法而改变了的行列排列次序;所述的步骤5)中,最大主元的求解步骤包括:(a)实现operator接口,进行并行循环优化,将循环的参数修改成线程构造块定义的blocked_range模板类;(b)实现带tbb::split的分支创建函数接口,当线程构造块决定分出一个blocked_range时,调用函数MaxElement(MaxElement&x,tbb::split);(c)实现join合并函数接口,当线程构造块合并blocked_range时,调用函数void_join(MaxElement&y),将最终的结果保存并返回;(d)实现构造函数接口。
地址 200092 上海市杨浦区四平路1239号