I am having a problem with the addition assignment operator in Cuda C. I get the following error:
kernel.cu(5): error: expression must have integral or enum type
My code is:
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
My desired result: c = [0,1,1,0,4,0,3,0,0,0,0,0]. Can anyone suggest a solution?