title: Is device memory object address in OpenCL aligned automatically?
body: <p>Here are sample codes:</p>
  
  <pre><code>__kernel void my_kernel(__global float* src,
                          __global float* dst){
  
      float4 a = vload4(0,src);
      //do something to a
      ...
      vstore4(a,0,dst)
  
  }
  </code></pre>
  
  <p>According to <a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/" rel="nofollow noreferrer">OpenCL 1.2 Reference</a>, address of global buffer <code>src</code> and <code>dst</code> must be 4-bytes aligned when using <code>vloadn</code> and <code>vstoren</code>, or the results are undefined. My question is whether OpenCL will automate aligning the global device address after completing the call to <code>clCreateBuffer</code>? If not, how to ensure proper alignment?(in addition, how about <code>local</code> memory object?)</p>