我有一个生成器,正在使用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
应该更快(在正确的域上循环,而不是在错误的域上循环并用减法对其进行校正)。