我的最终目标是在主机端对指针进行算术运算。我知道我们可以对内核执行以下操作:
// .cl file
__kernel void pointerAdd(float* arr, int index, float newVal) {
*(arr + index) = newVal;
}
// .cpp file
cl_mem arr = clCreateBuffer(...);
opencl.run("pointerAdd", {1} /* GWS */, {1} /* LWS */, arr, 10, 2.2f);
但是,我可以在将指针传递给内核之前增加主机上的指针吗?
由于 OpenCL 缓冲区由对象表示(即
cl_mem
),因此在主机上执行 arr += 10;
是完全错误的。有没有我们可以用来做指针运算的 API?