gpt4 book ai didi

c++ - 将值输出到不同大小的缓冲区

转载 作者:行者123 更新时间:2023-11-30 03:33:26 26 4
gpt4 key购买 nike

我需要将 2 个值输出到不同大小的缓冲区。一个与输入大小相同,另一个是宽度的一半和高度的一半。我想过使用元组,但我越界了,因为它在输入大小上进行迭代。这是一个简单的例子:

uint8_t _in[4] = { 1, 2, 3, 4 };
uint8_t _out1[4];
uint8_t _out2[1];

Buffer<uint8_t> in(_in, 2, 2);
Buffer<uint8_t> out1(_out1, 2, 2);
Buffer<uint8_t> out2(_out2, 1, 1);

Var x, y;
Func f;

f(x, y) = {
in(x,y),
in(x / 2, y / 2)
};

f.realize({ out1, out2 });

元组不是解决这个问题的正确方法吗?

最佳答案

使用两个输出 Funcs 构造一个 Halide::Pipeline 并在 Pipeline 对象上调用 realize

像这样:

uint8_t _in[4] = { 1, 2, 3, 4 };
uint8_t _out1[4];
uint8_t _out2[1];

Buffer<uint8_t> in(_in, 2, 2);
Buffer<uint8_t> out1(_out1, 2, 2);
Buffer<uint8_t> out2(_out2, 1, 1);

Var x, y;
Func f1, f2;

f1(x, y) = in(x,y);
f2(x, y) = in(x / 2, y / 2);

Pipeline pipeline({f1, f2});

pipeline.realize({ out1, out2 });

关于c++ - 将值输出到不同大小的缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42932267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com