ホストからコードに構造体を渡す方法は知っていますが、問題は、openclでpush_back関数(構造体の組み込み関数)が機能しないことです。私は私のホストに次のような構造を持っています
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));
}
}
}
}
前もって感謝します..