cuda_compile(CudaKernel src/CUDA.cu)
cuda_add_library(CudaKernels src/CUDA.cu)
Подозрительно разные идентификаторы, это точно так надо? Зачем вообще этот cuda_compile? Если вы его используете, тогда вам надо то что он положит в CudaKernel подставить в cuda_add_library, например
cuda_add_library(CudaKernels ${CudaKernel})
cuda_add_executable(Mandelbrot_set $(SOURCE_FILES) CudaKernels)
Странная конструкция. Если CudaKernels это таргет, что он делает в этом списке, где должны быть исходники?
И должен ли src/CUDA.cu компилится дважды?