在生成器中的任意域上实现功能

时间:2018-10-26 13:50:10

标签: halide

我有一个生成器,正在使用mex_halide创建一个Mex函数。像Halide tutorial 6一样,如何更改实现该功能的域?

我认为set_min是正确的做法,但我不知道将set_min命令放在哪里。

一个简单的例子:

#include "Halide.h"

using namespace Halide;

class test : public Generator<test> {
public:
  Output<Buffer<double>> grad{"grad", 2};
  Var x, y;
  void generate() {
    // something.set_min(-3, -3)?
    grad(x, y) = cast<double>(x);
  }
};

HALIDE_REGISTER_GENERATOR(test, test)

我可以在其中编译并运行

mex_halide('test.cpp', '-g test');
out = zeros(3);
test(out);

当然,我可以通过使用

来获得所需的输出
grad(x, y) = cast<double>(x-3);

但是我想set_min应该更快(在正确的域上循环,而不是在错误的域上循环并用减法对其进行校正)。

0 个答案:

没有答案