数据依赖关系
多面体模型在上面的系列一已经介绍过了,然后我们现在需要来优化for循环之间的数据依赖关系。数据依赖关系可以分为3个基本的部分.
对于我们例子中的二维矩阵的乘法来说,存在的三个数据依赖关系如下:
- Read dependence: the read-only data之间的流动。例如计算C[i][j]和C[i][j+1]都需要A[i][k] 。
- Flow dependence: transferring the intermediate results,例如C[i][j]的计算是不断累加中间变量C[i][j],读C[i][j]
• Output dependence: transferring the final results.例如累加后的C[i][j]又重新写回。
因此这三种依赖关系用isl来表示如下表: