在以上文章中第12点简单介绍了 图划分的 基本原理和方法。现在借助AI搜索引擎和GPT之类的工具,想要学习应用图划分也是比较容易的事。
简单用一个例子来说明图划分的作用。
以求解有限元,有限体积等方法 1亿自由度线性方程组为例:
方程Ax=b中的A为稀疏矩阵,假设稀疏度为0.01%
矩阵存储(CSR格式):
非零元素数值:约800GB (100亿个双精度浮点数)
列索引:约400GB (100亿个整型索引)
行指针:约0.4GB (一亿个整型指针)
向量存储:
解向量:约8GB
右端项:约8GB
计算求解
迭代过程临时向量:约24GB
预条件子存储:约400GB
总计内存需求:约1640GB
在求解过程中,需要进行大量矩阵的乘法和加法运算。
以上规模的数据,一般的服务器都无法求解,唯一可行的方法就是将矩阵数据分解成块,然后丢到不同的节点上计算,然后再合并,再分解,如此往复。
整体核心问题归纳以下几点:
1. 最小化数据接口
2. 保持计算负载均衡
3. 优化通信模式
其中最小化数据接口,简单讲就是将大规模的计算放在相同节点上,让节点和节点之间的数据交换尽可能少。和软件设计中的“低耦合高内聚”原则类似。
如何让一个矩阵能够按照“高内聚低耦合”以及均匀的原则进行分割,就是图划分做的事情。
矩阵对应图结构
1. 矩阵行/列 对应 图节点
2. 非零元素 对应 图边
3. 元素值 对应 边权重
图划分在神经网络计算,交通规划,图像处理,数据库,社交媒体算法 等领域有很多应用,求解线性方程组是图划分的一个细分应用领域。