text: import numpy as np
  import pyopencl as cl
  import numpy.linalg as la
  
  vector_dimension = 100
  
  vector_a = np.random.randint(vector_dimension, size=vector_dimension)
  vector_b = np.random.randint(vector_dimension, size=vector_dimension)
  
  platform = cl.get_platforms()[0]
  device = platform.get_devices()[0]
  
  context = cl.Context([device])
  queue = cl.CommandQueue(context)
  
  mf = cl.mem_flags
  a_g = cl.Buffer(context, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=vector_a)
  b_g = cl.Buffer(context, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=vector_b)
  
  program = cl.Program(context, """
  __kernel void vectorSum(__global const int *a_g, __global const int *b_g, __global int *res_g) {
    int gid = get_global_id(0);
    res_g[gid] = a_g[gid] + b_g[gid];
  }
  """).build()
  
  res_g = cl.Buffer(context, mf.WRITE_ONLY, vector_a.nbytes)
  program.vectorSum(queue, vector_a.shape, None, a_g, b_g, res_g)
  
  
  
  
  res_np = np.empty_like(vector_a)
  cl.enqueue_copy(queue, res_np, res_g)
  
  print ("PyOPENCL SUM OF TWO VECTORS")
  print ("Platform Selected = %s" %platform.name )
  print ("Device Selected = %s" %device.name)
  print ("VECTOR LENGTH = %s" %vector_dimension)
  print ("INPUT VECTOR A")
  print vector_a
  print ("INPUT VECTOR B")
  print vector_b
  print ("OUTPUT VECTOR RESULT A + B ")
  print res_np
  
  assert(la.norm(res_np - (vector_a + vector_b))) < 1e-5
  