Optimization 如何在gcc中启用循环平铺?

Optimization 如何在gcc中启用循环平铺?,optimization,gcc,loops,gcc4,tiling,Optimization,Gcc,Loops,Gcc4,Tiling,如何使用执行循环平铺(阻塞)的gcc编译代码?默认情况下,-O3优化不执行循环平铺。我需要在这个标志中启用循环平铺,并找出平铺因子。(例如立方体瓷砖或矩形瓷砖)即内部瓷砖启发法 谢谢您没有提供gcc的确切版本,没有提供示例代码,也没有提供结果代码,也没有在互联网上仔细查看,但这可能已经回答了您的问题: 条带开采是在gcc中引入的一种优化方法,它和。另见: -露天矿 对循环执行循环条带挖掘转换。条带挖掘将一个循环拆分为两个嵌套循环。外环的跨距等于条带尺寸,内环的跨距等于条带内原始环的跨距。可以使用

如何使用执行循环平铺(阻塞)的gcc编译代码?默认情况下,-O3优化不执行循环平铺。我需要在这个标志中启用循环平铺,并找出平铺因子。(例如立方体瓷砖或矩形瓷砖)即内部瓷砖启发法


谢谢

您没有提供gcc的确切版本,没有提供示例代码,也没有提供结果代码,也没有在互联网上仔细查看,但这可能已经回答了您的问题:

条带开采是在gcc中引入的一种优化方法,它和。另见:

-露天矿 对循环执行循环条带挖掘转换。条带挖掘将一个循环拆分为两个嵌套循环。外环的跨距等于条带尺寸,内环的跨距等于条带内原始环的跨距。可以使用“回路块平铺大小”参数更改条带长度。例如,给定如下循环:

循环条带挖掘将转换循环,就像用户编写了:

此优化适用于GCC支持的所有语言,不限于Fortran。要使用此代码转换,必须使用ppl和cloog配置GCC,以启用Graphite循环转换基础设施


您可以运行
man gcc | grep'\-floop \-strip \-mine'
来检查这是否是一个受支持的选项。对于确切的gcc版本,键入
gcc--version

您没有提供gcc的确切版本,也没有提供示例代码,也没有提供结果代码,也没有在internet上仔细查看,但这可能已经回答了您的问题:

条带开采是在gcc中引入的一种优化方法,它和。另见:

-露天矿 对循环执行循环条带挖掘转换。条带挖掘将一个循环拆分为两个嵌套循环。外环的跨距等于条带尺寸,内环的跨距等于条带内原始环的跨距。可以使用“回路块平铺大小”参数更改条带长度。例如,给定如下循环:

循环条带挖掘将转换循环,就像用户编写了:

此优化适用于GCC支持的所有语言,不限于Fortran。要使用此代码转换,必须使用ppl和cloog配置GCC,以启用Graphite循环转换基础设施


您可以运行
man gcc | grep'\-floop \-strip \-mine'
来检查这是否是一个受支持的选项。对于确切的gcc版本,键入
gcc--version

我的gcc版本是4.4.5。我读到flag-floop块执行代码阻塞。我的问题是,我们如何知道阻塞因子?是否有任何标志可以在编译时报告阻塞因子?我的gcc版本是4.4.5。我读到flag-floop块执行代码阻塞。我的问题是,我们如何知道阻塞因子?是否有任何标志可以在编译时报告阻塞因子?
          DO I = 1, N
            A(I) = A(I) + C
          ENDDO
          DO II = 1, N, 51
            DO I = II, min (II + 50, N)
              A(I) = A(I) + C
            ENDDO
          ENDDO