Неожиданный 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 аргументы:

  1. Обе kernelParams а также extras равны нулю, но ядро ​​принимает параметры.
  2. Обе kernelParams а также extras не равны нулю (это официально задокументировано)
  3. Количество элементов в kernelParams до прекращения nullptr значение не соответствует количеству параметров ядра.

и это далеко не полный список. Возможно злоупотреблениеextras тоже может вызвать это.

Другие вопросы по тегам