【问题标题】:Unexpected CUDA_ERROR_INVALID_VALUE from cuLaunchKernel()来自 cuLaunchKernel() 的意外 CUDA_ERROR_INVALID_VALUE
【发布时间】:2020-12-05 16:06:47
【问题描述】:

我正在尝试使用 CUDA 驱动程序 API 启动内核。具体来说,我在打电话

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

文档says

如果同时使用kernelParamsextra 指定内核参数(即kernelParamsextra 都不是NULL),则会返回错误CUDA_ERROR_INVALID_VALUE

好吧,我不这样做,我仍然收到CUDA_ERROR_INVALID_VALUE。为了更加安全,我在启动内核之前同步了流 - 但无济于事。

在尝试启动时获得CUDA_ERROR_INVALID_VALUE 的其他原因是什么?

【问题讨论】:

  • 您对文档选定部分的文本式阅读再次妨碍了您。这不是唯一可以返回 CUDA_ERROR_INVALID_VALUE 的条件。除了函数本身,任何不正确的参数也会产生同样的错误
  • @talonmies:包括网格暗淡和块暗淡?共享内存过多?无效的流句柄?

标签: cuda cuda-driver


【解决方案1】:

显然,在涉及kernelParams 和/或extras 参数问题的多种情况下,您可能会收到CUDA_ERROR_INVALID_VALUE 错误:

  1. kernelParamsextras 均为 null,但内核接受参数。
  2. kernelParamsextras 都是非空的(这是官方记录的)
  3. kernelParams 中的元素数在终止 nullptr 值之前与内核参数数不匹配。

这不是一个详尽的列表。可能滥用extras 也会导致这种情况。

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 2023-03-24
    • 2017-08-21
    • 2014-04-06
    • 2015-11-01
    • 2015-02-13
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多