if I have a structure like this:
struct x cpu_struct_x;
gpu_struct_x = clCreateBuffer(..., sizeof(struct x), ...);
cpu_struct_x.a = clCreateBuffer(..., sizeof(cl_uint) * N, ...);
cpu_struct_x.b = clCreateBuffer(..., sizeof(cl_float) * M, ...);
and on the GPU:
can I do:
clEnqueueWriteBuffer(..., gpu_struct_x, ..., sizeof(struct x), &cpu_struct_x, ...); ?
I need this, because I have many lists, and I just want to pass a pointer to a structure which contains pointers to all the lists to the kernels.
I thought this, because I understand cl_mem objects as simple pointers, and I'm not sure that's true...
 And what about pointer arithmetics? If I want to copy from element 2 can I do
clEnqueueReadBuffer(..., cl_mem_vector + sizeof(dim_element) * 2 , ...); ?
-I found out I can't do that, so how could I read only a part of a vector, starting with index N ?