0

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

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

4

1 回答 1

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

于 2016-05-19T17:43:34.463 回答