title: Addition Assignment Operator in Cuda C
body: <p>I'm experiencing a problem with addition assignment operator in Cuda C. I'm getting the following error:</p>
  
  <pre><code>kernel.cu(5): error: expression must have integral or enum type
  </code></pre>
  
  <p>My code is :</p>
  
  <pre><code>import pycuda.driver as drv
  import pycuda.autoinit
  from pycuda.compiler import SourceModule
  import numpy as np
  
  mod=SourceModule("""
  __global__ void addition(float* a,float* b,float*c){
  int i=threadIdx.x + blockIdx.x * blockDim.x;
  c[a[i]]+=b[i];
  }
  """)
  
  addition=mod.get_function("addition")
  a=np.array([1,2,3,1,2,3,2,1]).astype(np.float32)
  b=np.array([0.1,0.2,0.1,0.5,0.1,0.2,0.1,0.5]).astype(np.float32)
  c=np.zeros_like(a)
  addition(drv.Out(c),drv.In(a),drv.In(b),block=(32,1,1))
  print c
  </code></pre>
  
  <p>My desired output is c = [0,1.1,0.4,0.3,0,0,0,0]. Can anyone suggest the solution?</p>