Стандартный интерфейс функции PyCUDA требует, чтобы аргумент имел несколько dtypes, потому что он внутренне выполняет сопоставление с типами C под капотом.Так что для скалярных аргументов, которые передаются по значению, вам нужно сначала «привести» к подходящему numpy dtype.Что-то вроде
value = 256
va = numpy.int32(value)
func(va)
должно работать.Если вы передаете значения или массивы с плавающей запятой одинарной точности, обязательно используйте dtype типа np.float32, потому что numpy по умолчанию использует двойную точность, и вы получите подобные ошибки.