大规模稀疏矩阵并行计算课件



《大规模稀疏矩阵并行计算课件》由会员分享,可在线阅读,更多相关《大规模稀疏矩阵并行计算课件(21页珍藏版)》请在装配图网上搜索。
1、大规模稀疏矩阵并行计算李修宇QQ:2955533817/21/20241大规模稀疏矩阵并行计算李修宇8/15/20231主流求解方法直接法oGAUSS消去法o波前法o多波前法迭代法o经典迭代法Jacobi、SOR、SSORo投影方法CG、GMRESo预处理技术不完全分解预处理条件o代数多重网格技术7/21/2024大规模稀疏矩阵并行计算2主流求解方法8/15/2023大规模稀疏矩阵并行计算2矩阵性质对求解的影响性质影响7/21/2024大规模稀疏矩阵并行计算3非零元的分布o带状分布o按块分布o正定性对称性矩阵的存储方式求解方法的选择求解速度矩阵性质对求解的影响性质影响8/15/2023大规模稀
2、疏矩阵直接法矩阵图重排:一般分为两大类,带宽缩减算法(也常称为外形缩减)和区域分解算法,应用较多的带宽缩减算法CM,RCM,GPS,Rosen算法。一般建议多重方法结合使用:全局方法的全局平衡性、局部方法的局部最优特性。符号分解:确定非零元结构以及相应的消元索引,以便在实际数值分解前确定所需存储资源大小,避免数值分解中动态分配存储空间和复杂的索引策略。构建消去树(elimination tree):确定分解节点之间的分解依赖,即确定分解的顺序并构成并行分解的层次结构。7/21/2024大规模稀疏矩阵并行计算4直接法8/15/2023大规模稀疏矩阵并行计算4直接法数值分解:利用符号分解得到的非零
3、元结构和索引沿消去树路径进行分解。回代求解:包括前向(forward)和后向(backward)回代,可先构建消去依赖树或顶点着色技术实现并行回代求解。在有限元领域应用最广的直接求解方法常使用带宽缩减或多区域分解的多波前法(multifrontal)。7/21/2024大规模稀疏矩阵并行计算5直接法8/15/2023大规模稀疏矩阵并行计算5对称正定矩阵的求解7/21/2024大规模稀疏矩阵并行计算6对称正定矩阵的求解8/15/2023大规模稀疏矩阵并行计算对称矩阵的不完全分解7/21/2024大规模稀疏矩阵并行计算7对称矩阵的不完全分解8/15/2023大规模稀疏矩阵并行计代数多重网格法V-C
4、ycle AMG(V循环多重网格法)W-Cycle AMG(W循环多重网格法)FMG(完全多重网格法:嵌套网格与V循环或者W循环结合)7/21/2024大规模稀疏矩阵并行计算8代数多重网格法8/15/2023大规模稀疏矩阵并行计算8代数多重网格法7/21/2024大规模稀疏矩阵并行计算9代数多重网格法8/15/2023大规模稀疏矩阵并行计算9代数多重网格法在粗网格上对残差方程进行求解(可用迭代法或直接解法)。延拓或插值(interpolation):将细网格节点上的值通过分片插值延拓到细网格节点上。通过光滑的残差对解进行修正。后光滑(post-smooth),类似于前光滑。7/21/2024大
5、规模稀疏矩阵并行计算10代数多重网格法8/15/2023大规模稀疏矩阵并行计算10代数多重网格法方法选择对于非结构化网格形成的矩阵,SGS,SSOR方法不易并行,即使使用顶点着色技术,因其粗粒度的并行更适合于传统的多核处理器,并不非常适合GPU这样的细粒度并行的架构。Jacobi方法不具有低通滤波性,因此推荐使用damp-Jacobi和PCG方法作为迭代子,其中damp-Jacobi方法的权值一般取为2/3。在最粗网格上的计算推荐使用直接解法。通常对于二阶椭圆边值问题,几何多重网格法具有更好的计算效率以及收敛速度。7/21/2024大规模稀疏矩阵并行计算11代数多重网格法方法选择8/15/20
6、23大规模稀疏矩阵并行计代数多重网格法方法选择一般遵循两个原则:o对于某个顶点,其邻接顶点要么属于粗网格顶点,要么至少连接到一个粗网格顶点。o粗网格顶点集应是任意两个粗网格节点不相邻的极大独立集。有时很难同时满足两个条件,优先满足第一个条件时尽量满足第二个条件。7/21/2024大规模稀疏矩阵并行计算12代数多重网格法方法选择8/15/2023大规模稀疏矩阵并行计代数多重网格法方法选择7/21/2024大规模稀疏矩阵并行计算13代数多重网格法方法选择8/15/2023大规模稀疏矩阵并行代数多重网格法的局限性任意几何网格不适用于所有问题。需要高质量的网格划分。不便于编写通用的程序。重点要解决的问
7、题:网格粗化(对应于粗水平方程组)。常用的网格粗化方法复杂:RS,RS2,RS3,Falgout,HIPS,CLJP。7/21/2024大规模稀疏矩阵并行计算14代数多重网格法的局限性8/15/2023大规模稀疏矩阵并行计大规模稀疏矩阵GPU计算程序优化设计探索内核执行的优化o在大循环中具有大量入口参数的内核,其不变的参数在循环开始前放入常量内存。避免多余的内存操作o合理的网格布局。o有时将一个大grid拆分成多个阶段小的grid将有助于提高网格利用率,提高计算效率,例如对称矩阵的分解以及三角方程组的计算。寄存器优化o一个线程中计算输出多个变量,用寄存器内存替换共享内存。o在Fermi上,如果
8、程序中存取操作占多数,则对于大于32bit的数据,以字节流的形式访问,因为对于例如双精度数据,这时只有一个warp调度器可以工作。7/21/2024大规模稀疏矩阵并行计算15大规模稀疏矩阵GPU计算程序优化设计探索8/15/2023大大规模稀疏矩阵GPU计算程序优化设计探索合并访问存取操作以half-warp(计算能力b)a=c;else a=0;可以替换为:a=(ab)*c;7/21/2024大规模稀疏矩阵并行计算17大规模稀疏矩阵GPU计算程序优化设计探索8/15/2023大大规模稀疏矩阵GPU计算程序优化设计探索指令按照half-warp(计算能力=1.3)或者warp对齐。例如:每个线
9、程计算输出7个变量,每个变量的计算差别很大。这时可以让block的第一个warp的所有线程计算第一个变量,第二个warp计算第二个变量,可以利用函数指针(在计算能力=1.3的硬件上可以使用对齐到warp边界的控制语句,这时并不会在warp内造成路径分支(uniform divergence),通过warp编号来选择;但是对于相近的计算则不建议使用函数指针反而会降低效率。7/21/2024Footer Text18大规模稀疏矩阵GPU计算程序优化设计探索8/15/2023F大规模稀疏矩阵GPU计算程序优化设计探索对于矢量类型数据,使用SOA(Structure of Array)格式代替例如,f
10、loat4可使用xxxx yyyy zzzz wwww的存储结构代替,一般更有效。在Fermi硬件上,读float4类型的数据,虽然显存带宽可以被充分利用,但是会有部分CUDA Core暂时闲置,并且必须等待两次的存储请求完成才开始计算,而如果使用SOA,则在其后的各分量独立的计算中可以更有效隐藏延迟。7/21/2024大规模稀疏矩阵并行计算19大规模稀疏矩阵GPU计算程序优化设计探索8/15/2023大大规模稀疏矩阵GPU计算程序优化设计探索如果按照显式的warp模式进行操作,则尽量将每个warp对应操作的存储器起始地址对齐。如果每个warp的活动线程数小于75%左右时,则不建议使用。数据结构应该和网格布局相互适应来有效利用存储控制器的带宽。例如矩阵的转置。7/21/2024大规模稀疏矩阵并行计算20大规模稀疏矩阵GPU计算程序优化设计探索8/15/2023大谢谢!7/21/202421大规模稀疏矩阵并行计算谢谢!8/15/202321大规模稀疏矩阵并行计算
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。