Я использую OpenCL с обертками C++, используя GPU для тяжелых вычислений.Как передать cl :: Buffer объект между функциями хоста C++?
Данные в cl :: Буферные объекты, например.
std::vector<float> host_z_vec(100, 0.0f);
cl::Buffer device_z_vec;
device_z_vec = cl::Buffer(*context_ptr,
CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR,
sizeof(float)*host_z_vec.size(),
&host_z_vec.at(0),
&status);
Как передать объект cl :: Buffer, device_z_vec, между функциями хоста C++? - Я не хочу делать копии device_z_vec, просто передаю его.
void run_on_gpu(cl::Buffer device_z_vec){ ... }
или
void run_on_gpu(const cl::Buffer& device_z_vec){ ... }
?
И это нормально?
class StoreBuffer{
cl::Buffer device_z_vec;
public:
cl::Buffer provide_access_to_device_z_vec(){ return device_z_vec; };
}
или должен ли я передавать указатель на объект cl :: Buffer?