我知道如何将结构从主机传递到代码,但问题是 push_back 函数(这是结构的内置函数)在 opencl 中不起作用。我的主机中有一个结构,例如
struct MyKey
{
int x;
float y;
int scale;
MyKey(int x, float y, int scale) : x(x), y(y), scale(scale){ }
}
我在主机中为这个结构创建了一个对象,比如
std :: vector<MyKey> obj;
我将它传递给我的内核,并将结构定义放在那里(在内核中),现在当我尝试调用 push_back 函数时,它会抛出错误。,
__kernel void test(ui32_t w, ui32_t h, constant struct MyKey* obj, i32_t thrd_size)
{
//toatl thread count is w*h
i32_t i = get_global_id(0);
if(i<thrd_size)
{
for (ui32_t i = 0; i < h; i++)
{
for (ui32_t j = 0; j < w; j++)
{
obj.push_back(MyKey(j,iw,h));
}
}
}
}
提前致谢..