Polyhedral model

循环倾斜:

指的是数据计算时,循环之间有依赖,无法将循环计算并行。可以通过循环倾斜的方式,使得在倾斜后的循环内,没有数据依赖,从而达到并行的效果。

 

我们可以看到,固定i,然后看j,每个j的计算都是有读写依赖的。

固定j,然后看i,也是一样。

然后经过循环倾斜:

 

 这时候,我们固定t,看p,可以看到p的循环计算没有读写依赖。

根本原因是增加了distance,即远处的可能是没有依赖的。

注意,内循环 i已经倾斜变成了p。p是可以并行的。

(要竖着看,如绿色和蓝色,黄色和黑色)

也可以看到,并行度没有达到4,这也是局限之一。(这里并行度最大为2)

参见wikipedia

https://en.wikipedia.org/wiki/Polytope_model

 

 

 

 

主题思想就是把循环依赖一定程度上放到循环内部,从而让一部分的循环可以并行。

 

 循环倾斜,可以使j循环并行执行。

 

资源:

1. https://www.slideshare.net/ahayashi10/introduction-to-polyhedral-compilation

2. 

posted @ 2021-01-27 20:26  xuyv  阅读(507)  评论(0)    收藏  举报