カーネル関数があるとします:
kernel void function(global const float* a, global const float* b, global float* c, int nElements)
{
...
c[gid] = a[gid] * b[gid];
}
しかし、大規模で複雑なカーネルをいくつかの小さな関数に分割したいと考えています。これらの小さな関数にグローバル バッファを渡すにはどうすればよいですか?
次のようにすると、「関数 'cl_axpbyr' の暗黙の宣言は OpenCL では無効です」という形式のエラーが表示されます。
kernel void function(global const float* a, global const float* b, global float* c, int nElements)
{
...
cl_axpbyr(1.0f, a, c, nElements);
}
inline void cl_axpy(float alpha, global const float* x, global float* y, int nElements)
{
int gid = get_global_id(0);
if (gid >= nElements)
{
return;
}
y[gid] = alpha*x[gid] + y[gid];
}