The preferred vector width is just a recommendation for improving performance. In this case, NVIDIA's OpenCL implementation is telling you that it would prefer vectors of size 1 (i.e. scalar), because it doesn't have native support for vectors. It will work perfectly fine with vectors of any other size however (as will all implementations that conform to the standard), so there's no restrictions as to what vector size you can actually use in your kernels.