在C+中初始化卤化物缓冲区+; 我试图用C++ 1D数组初始化Halide Buffer。考虑到其他一些在线帖子,这是我目前得到的: Image<float> in(Buffer(type_of<float>(), size_x, 0, 0, 0, NULL, in_ptr)); Image-in(缓冲区(type_of(),size_x,0,0,0,NULL,in_ptr)); 其中,InPtR是指向C++数组的指针。 当我运行此命令时,会出现以下错误:
错误:“(”标记之前缺少模板参数 图像输入(缓冲区(type_of(),padded_size*(jb+1),0,0,0,NULL,d_-in)) 因此,我将代码更改为:在C+中初始化卤化物缓冲区+; 我试图用C++ 1D数组初始化Halide Buffer。考虑到其他一些在线帖子,这是我目前得到的: Image<float> in(Buffer(type_of<float>(), size_x, 0, 0, 0, NULL, in_ptr)); Image-in(缓冲区(type_of(),size_x,0,0,0,NULL,in_ptr)); 其中,InPtR是指向C++数组的指针。 当我运行此命令时,会出现以下错误:,c++,buffer,halide,C++,Buffer,Halide,错误:“(”标记之前缺少模板参数 图像输入(缓冲区(type_of(),padded_size*(jb+1),0,0,0,NULL,d_-in)) 因此,我将代码更改为: Image-in(缓冲区(type_of(),size_x,0,0,0,NULL,in_ptr)); 但这与任何构造函数都不匹配,但我找不到任何关于如何初始化缓冲区的好文档 P>是否有可能这样做?我如何使用C++ 1D或2D数组初始化卤化物缓冲区? 最近发生的缓冲类型改变,这就是为什么你在网上发现的东西是没有用的。 flo
Image-in(缓冲区(type_of(),size_x,0,0,0,NULL,in_ptr));
但这与任何构造函数都不匹配,但我找不到任何关于如何初始化缓冲区的好文档
<> P>是否有可能这样做?我如何使用C++ 1D或2D数组初始化卤化物缓冲区? 最近发生的缓冲类型改变,这就是为什么你在网上发现的东西是没有用的。
float my_数组[10];
Halide::Buffer buf(my_数组);//根据类型推断大小
float*我的指针=。。。
Halide::Buffer buf(my_指针,10);//接受指针和一些大小
2D的工作原理与此类似:
float my_array[30][20]
Halide::Buffer<float> buf(my_array); // Makes a 20x30 array
float my_数组[30][20]
卤化物::Buffer buf(my_数组);//构成20x30数组
或同等地
float *my_pointer = ...
Halide::Buffer<float> buf(my_pointer, 20, 30);
float*我的指针=。。。
卤化物::缓冲区buf(my_指针,20,30);
这两个构造函数都不复制数据-它们只是引用现有阵列。对于最新的卤化物,您可能需要:
缓冲区我的缓冲区(in_ptr,size_x);
这将创建指向\u ptr中的的my\u buffer
。模板参数中的1是维度数量。对于较大数量的维度,在通过预填充内存时,可能还必须指定跨距。(以上假设\u ptr
中指向的数据密集排列,即每个元素的索引比\u ptr
中的前一个索引大一个)
这方面的语法最近发生了变化,但其目的是使使用更简单、更一致。是否有一个构造函数可以复制数据而不是指向数组?您可以强制复制到设备
buf.copy\u到设备(halide\u opencl\u device\u interface())
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);