Does that help In numpy all objects contained in the same array have a common data type. This data type is specified in the attribute dtype of the array. (numpy.array doc, numpy datatypes) Data in your array a_h is of data type float64 (64bit float). As your kernel is expecting 32bit floats (float32) it is interpreting the data of a_h like this. So it would see 8 32bit floats instead of 4 64bit floats.