Неожиданный CUDA_ERROR_INVALID_VALUE от cuLaunchKernel()
Я пытаюсь запустить ядро с помощью API драйвера CUDA. Конкретно звоню
CUresult CUDAAPI cuLaunchKernel(
CUfunction f,
unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ,
unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ,
unsigned int sharedMemBytes,
CUstream hStream,
void **kernelParams,
void **extra);
Я только использую kernelParams
, и прохождение nullptr
за extra
. Теперь для одного из моих ядер я получаюCUDA_ERROR_INVALID_VALUE
.
В документации говорится:
Ошибка
CUDA_ERROR_INVALID_VALUE
будет возвращено, если параметры ядра указаны с обоимиkernelParams
а такжеextra
(т.е. обаkernelParams
а такжеextra
неNULL
).
ну, я этого не делаю и все еще получаю CUDA_ERROR_INVALID_VALUE
. Для большей безопасности я синхронизировал поток прямо перед запуском ядра, но безрезультатно.
Каковы еще причины получения CUDA_ERROR_INVALID_VALUE
при попытке запустить?
1 ответ
Судя по всему, можно получить CUDA_ERROR_INVALID_VALUE
ошибка в нескольких случаях, связанных с проблемами с вашим kernelParams
и / или extras
аргументы:
- Обе
kernelParams
а такжеextras
равны нулю, но ядро принимает параметры. - Обе
kernelParams
а такжеextras
не равны нулю (это официально задокументировано) - Количество элементов в
kernelParams
до прекращенияnullptr
значение не соответствует количеству параметров ядра.
и это далеко не полный список. Возможно злоупотреблениеextras
тоже может вызвать это.