¿Cuál es la diferencia entre crear un objeto de búfer con clCreateBuffer + CL_MEM_COPY_HOST_PTR frente a clCreateBuffer + clEnqueueWriteBuffer?

He visto ambas versiones en tutoriales, pero no pude averiguar cuáles son sus ventajas y desventajas. ¿Cuál es el correcto?

cl_mem input = clCreateBuffer(context,CL_MEM_READ_ONLY,sizeof(float) * DATA_SIZE, NULL, NULL);
clEnqueueWriteBuffer(command_queue, input, CL_TRUE, 0, sizeof(float) * DATA_SIZE, inputdata, 0, NULL, NULL);

vs.

cl_mem input = clCreateBuffer(context,CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, ,sizeof(float) * DATA_SIZE, inputdata, NULL);

Gracias.

[Actualizar]

yo añadíCL_MEM_COPY_HOST_PTR, al segundo ejemplo para corregirlo.

Respuestas a la pregunta(5)

Su respuesta a la pregunta