卤化物检查是否可以拆分

时间:2016-05-19 09:57:31

标签: c++ optimization halide

我正在编写一个采用不同图像尺寸的Halide程序。当我优化时,我在一些“子循环”中拆分一个循环,这样我就可以将它与给定的因子并行化。但是,对于小图像,如果图像小于分割因子,则可能会出现问题。或者,更准确地说,当循环中的迭代次数小于splitfactor时。

使用Halide::BoundaryConditions处理超出界限,当然我可以使用if语句手动检查拆分因子,但Halide是否有类似于优化的BoundaryConditions的东西?

1 个答案:

答案 0 :(得分:0)

如果我理解了你所说的话,那就是Func :: specialize的用途。你可以这样做:

// Only vectorize if output is large enough
f.specialize(f.output_buffer().width() > 8).vectorize(x, 8);

Halide sgemm使用了这一组:https://github.com/halide/Halide/blob/master/apps/linear_algebra/src/blas_l3_generators.cpp