gpt4 book ai didi

c++ - 在 C++ 中初始化 Halide 缓冲区

转载 作者:行者123 更新时间:2023-11-30 00:46:05 30 4
gpt4 key购买 nike

我正在尝试使用 C++ 一维数组初始化 Halide Buffer。鉴于网上的一些其他帖子,这是我到目前为止所得到的:

Image<float> in(Buffer(type_of<float>(), size_x, 0, 0, 0, NULL, in_ptr));

其中 in_ptr 是指向我的 C++ 数组的指针。当我运行它时,出现以下错误:

error: missing template arguments before ‘(’ token Image in(Buffer(type_of(), padded_size * (jb + 1), 0, 0, 0, NULL, d_In));

所以我将代码更改为:

Image<float> in(Buffer<float>(type_of<float>(), size_x, 0, 0, 0, NULL, in_ptr));

但这也不匹配任何构造函数,但我找不到任何关于如何初始化缓冲区的好文档。

甚至可以做这样的事情吗?如何使用 C++ 一维或二维数组来初始化 Halide 缓冲区?

最佳答案

Buffer 类型最近发生了变化,这就是为什么您在网上找到的东西没有用的原因。要创建指向数组的缓冲区,请使用以下两个构造函数之一:

https://github.com/halide/Halide/blob/master/src/runtime/HalideBuffer.h#L631

float my_array[10];
Halide::Buffer<float> buf(my_array); // Infers the size from the type

https://github.com/halide/Halide/blob/master/src/runtime/HalideBuffer.h#L665

float *my_pointer = ...
Halide::Buffer<float> buf(my_pointer, 10); // Accepts a pointer and some sizes

2D 的工作原理类似:

float my_array[30][20]
Halide::Buffer<float> buf(my_array); // Makes a 20x30 array

或等效地,

float *my_pointer = ...
Halide::Buffer<float> buf(my_pointer, 20, 30);

这些构造函数都不复制数据 - 它们只是引用现有数组。

关于c++ - 在 C++ 中初始化 Halide 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779149/

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