title: CL_MEM_USE_HOST_PTR Vs CL_MEM_COPY_HOST_PTR Vs CL_MEM_ALLOC_HOST_PTR
body: <p>In the book OpenCl By Action I read this:</p>
  
  <p><strong>CL_MEM_USE_HOST_PTR:</strong> The memory object will access the memory region specified by the host
  pointer. </p>
  
  <p><strong>CL_MEM_COPY_HOST_PTR:</strong> The memory object will set the memory region specified by the host pointer. </p>
  
  <p><strong>CL_MEM_ALLOC_HOST_PTR:</strong> A region in host-accessible memory will be allocated for use in data transfer.</p>
  
  <p>I am utterly confused o these three flags. </p>
  
  <p>I would like to know at least how are the first two different. </p>
  
  <p>1-In CL_MEM_USE_HOST_PTR Memory Object will <em>access</em> the memory region  while in CL_MEM_COPY_HOST_PTR Memory Object will <em>set</em> the memory region  (specified by host in both cases). How is this setting and accessing different ? 
  Then the third one is again confusing me a lot. </p>
  
  <p>2- Are all of these pinned memory allocation?</p>