CUDA错误类型
枚举器:
cudaSuccess API调用返回没有错误。 对于查询调用,这也可能意味着要查询的操作已完成(请参阅cudaEventQuery()和cudaStreamQuery())。
cudaErrorMissingConfiguration先前未通过cudaConfigureCall()函数配置正在调用的设备功能(通常是通过cudaLaunch())。
cudaErrorMemoryAllocation API调用失败,因为它无法分配足够的内存来执行请求的操作。
cudaErrorInitializationError API调用失败,因为无法初始化CUDA驱动程序和运行时。
cudaErrorLaunchFailure执行内核时设备上发生了异常。 常见原因包括取消引用无效的设备指针和访问共享内存超出范围。 在调用cudaThreadExit()之前,无法使用该设备。 所有现有的设备内存分配均无效,如果程序要继续使用CUDA,则必须对其进行重构。
cudaErrorPriorLaunchFailure这表明先前的内核启动失败。 以前用于内核启动的设备仿真。
不推荐使用:
从CUDA 3.1开始不推荐使用此错误返回。 CUDA 3.1发行版删除了设备仿真模式。
cudaErrorLaunchTimeout这表明设备内核执行时间过长。 仅在启用超时的情况下才会发生这种情况-有关更多信息,请参见设备属性kernelExecTimeoutEnabled。 在调用cudaThreadExit()之前,无法使用该设备。 所有现有的设备内存分配均无效,如果程序要继续使用CUDA,则必须对其进行重构。
cudaErrorLaunchOutOfResources这表明没有启动,因为它没有适当的资源。 尽管此错误与cudaErrorInvalidConfiguration相似,但此错误通常表明用户尝试向设备内核传递太多参数,或者内核启动为内核的寄存器计数指定了太多线程。
cudaErrorInvalidDeviceFunction请求的设备功能不存在,或者没有为正确的设备体系结构编译。
cudaErrorInvalidConfiguration这表明内核启动正在请求当前设备永远无法满足的资源。 每个块请求的共享内存比设备支持的更多,将触发此错误,因为请求过多的线程或块。 有关更多设备限制,请参见cudaDeviceProp。
cudaErrorInvalidDevice这表示用户提供的设备序号与有效的CUDA设备不对应。
cudaErrorInvalidValue这表示传递给API调用的一个或多个参数不在可接受的值范围内。
cudaErrorInvalidPitchValue这表明传递给API调用的一个或多个与音高相关的参数不在音高可接受的范围内。
cudaErrorInvalidSymbol这表示传递给API调用的符号名称/标识符不是有效的名称或标识符。
cudaErrorMapBufferObjectFailed这表明无法映射缓冲区对象。
cudaErrorUnmapBufferObjectFailed这指示无法取消映射缓冲区对象。
cudaErrorInvalidHostPointer这表示传递给API调用的至少一个主机指针不是有效的主机指针。
cudaErrorInvalidDevicePointer这表示传递给API调用的至少一个设备指针不是有效的设备指针。
cudaErrorInvalidTexture这表明传递给API调用的纹理不是有效的纹理。
cudaErrorInvalidTextureBinding这表明纹理绑定无效。 如果您使用未绑定的纹理调用cudaGetTextureAlignmentOffset(),则会发生这种情况。
cudaErrorInvalidChannelDescriptor这表明传递给API调用的通道描述符无效。 如果格式不是cudaChannelFormatKind指定的格式之一,或者尺寸之一无效,则会发生这种情况。
cudaErrorInvalidMemcpyDirection这表明传递给API调用的memcpy的方向不是cudaMemcpyKind指定的类型之一。
cudaErrorAddressOfConstant这表明用户已使用了常量变量的地址,直到CUDA 3.1发行版才禁止使用该地址。
不推荐使用:
从CUDA 3.1开始不推荐使用此错误返回。 现在,常量内存中的变量现在可以通过cudaGetSymbolAddress()由运行时获取其地址。
cudaErrorTextureFetchFailed这表明无法执行纹理获取。 以前用于纹理操作的设备仿真。
不推荐使用:
从CUDA 3.1开始不推荐使用此错误返回。 CUDA 3.1发行版删除了设备仿真模式。
cudaErrorTextureNotBound这表明纹理未绑定访问。 以前用于纹理操作的设备仿真。
不推荐使用:
从CUDA 3.1开始不推荐使用此错误返回。 CUDA 3.1发行版删除了设备仿真模式。
cudaErrorSynchronizationError这表明同步操作已失败。 以前用于某些设备仿真功能。
不推荐使用:
从CUDA 3.1开始不推荐使用此错误返回。 CUDA 3.1发行版删除了设备仿真模式。
cudaErrorInvalidFilterSetting这表明正在通过线性过滤访问非浮动纹理。 CUDA不支持此功能。
cudaErrorInvalidNormSetting这表明尝试读取非浮动纹理作为规范化的浮动。 CUDA不支持此功能。
cudaErrorMixedDeviceExecution不允许混合使用设备和设备仿真代码。
不推荐使用:
从CUDA 3.1开始不推荐使用此错误返回。 CUDA 3.1发行版删除了设备仿真模式。
cudaErrorCudartUnloading这表明CUDA运行时API调用无法执行,因为在进程关闭期间(在卸载CUDA驱动程序后的某个时间)正在调用它。
cudaErrorUnknown这表明发生了未知的内部错误。
cudaErrorNotYetImplemented这表示尚未实现API调用。 CUDA的生产版本永远不会返回此错误。
不推荐使用:
从CUDA 4.1开始不推荐使用此错误返回。
cudaErrorMemoryValueTooLarge这表明模拟的设备指针超出了32位地址范围。
不推荐使用:
从CUDA 3.1开始不推荐使用此错误返回。 CUDA 3.1发行版删除了设备仿真模式。
cudaErrorInvalidResourceHandle这表明传递给API调用的资源句柄无效。 资源句柄是不透明的类型,例如cudaStream_t和cudaEvent_t。
cudaErrorNotReady这表明先前发出的异步操作尚未完成。 该结果实际上不是错误,但是必须与cudaSuccess(指示完成)的显示方式有所不同。 可能返回此值的调用包括cudaEventQuery()和cudaStreamQuery()。
cudaErrorInsufficientDriver这表明已安装的NVIDIA CUDA驱动程序早于CUDA运行时库。 这不是受支持的配置。 用户应安装更新的NVIDIA显示驱动程序以允许应用程序运行。
cudaErrorSetOnActiveProcess这表示用户在初始化内存设备并通过调用CUDA运行时初始化启动内存管理实例之后,已调用内核设备运行时,调用了cudaSetValidDevices(),cudaD3D9SetDirect3DDevice(),cudaD3D10SetDirect3DDevice,cudaD3D11SetDirect3DDevice()或cudaVDPAUSetVDPAUDevice()来调用内存设备实例。非设备管理操作)。 如果使用运行时/驱动程序互操作性且主机线程上存在现有的CUcontext,则也可能返回此错误。
cudaErrorInvalidSurface这表明传递给API调用的表面不是有效表面。
cudaErrorNoDevice这表明已安装的CUDA驱动程序未检测到支持CUDA的设备。
cudaErrorECCUncorrectable这表明在执行过程中检测到不可纠正的ECC错误。
cudaErrorSharedObjectSymbolNotFound这表明指向共享库的链接无法解析。
cudaErrorSharedObjectInitFailed这表明共享对象的初始化失败。
cudaErrorUnsupportedLimit这表明活动设备不支持传递给API调用的cudaLimit。
cudaErrorDuplicateVariableName这表明多个全局或常量变量(跨应用程序中的单独CUDA源文件)共享相同的字符串名称。
cudaErrorDuplicateTextureName这表示多个纹理(跨应用程序中的单独CUDA源文件)共享相同的字符串名称。
cudaErrorDuplicateSurfaceName这表明多个表面(跨应用程序中的单独CUDA源文件)共享相同的字符串名称。
cudaErrorDevicesUnavailable这指示当前所有CUDA设备正忙或不可用。 由于使用cudaComputeModeExclusive,cudaComputeModeProhibited或长时间运行的CUDA内核填满了GPU并阻止了新工作的启动,设备通常很忙/不可用。 由于已经执行了活动CUDA工作的设备上的内存限制,它们也可能不可用。
cudaErrorInvalidKernelImage这表明设备内核映像无效。
cudaErrorNoKernelImageForDevice这表示没有适用于该设备的内核映像。 当用户为特定CUDA源文件指定不包括相应设备配置的代码生成选项时,可能会发生这种情况。
cudaErrorIncompatibleDriverContext这表示当前上下文与此CUDA运行时不兼容。 仅当您使用CUDA运行时/驱动程序互操作性并且已使用驱动程序API创建了现有的驱动程序上下文时,才会发生这种情况。 驱动程序上下文可能是不兼容的,或者是由于驱动程序上下文是使用较旧版本的API创建的,或者是因为运行时API调用期望使用主驱动程序上下文,而驱动程序上下文不是主要的,或者是因为驱动程序上下文已被破坏。 请参阅与CUDA驱动程序API的交互”以了解更多信息。
cudaErrorPeerAccessAlreadyEnabled此错误表明对cudaDeviceEnablePeerAccess()的调用正在尝试从已启用对等寻址的上下文中重新启用对等寻址。
cudaErrorPeerAccessNotEnabled此错误表明cudaDeviceDisablePeerAccess()试图禁用尚未通过cudaDeviceEnablePeerAccess()启用的对等寻址。
cudaErrorDeviceAlreadyInUse这表示调用试图访问已由其他线程使用的独线程设备。
cudaErrorProfilerDisabled表示此运行已禁用分析器,因此无法使用运行时API来分析程序的子集。 当应用程序使用外部概要分析工具(如可视化探查器)运行时,可能会发生这种情况。
cudaErrorProfilerNotInitialized这表明分析器尚未初始化。 必须先调用cudaProfilerInitialize(),然后才能调用cudaProfilerStart和cudaProfilerStop初始化探查器。
cudaErrorProfilerAlreadyStarted这表明分析器已经启动。 如果多次调用cudaProfilerStart()而未随后调用cudaProfilerStop(),则会返回此错误。
cudaErrorProfilerAlreadyStopped这表明分析器已经停止。 如果在未使用cudaProfilerStart()启动分析器的情况下调用cudaProfilerStop(),则可能返回此错误。
cudaErrorAssert在内核执行期间在设备代码中触发的断言。 在调用cudaThreadExit()之前,无法再次使用该设备。 所有现有分配均无效,如果程序要继续使用CUDA,则必须重新构造。
cudaErrorTooManyPeers此错误表明,传递给cudaEnablePeerAccess()的一个或多个设备已耗尽了启用对等访问所需的硬件资源。
cudaErrorHostMemoryAlreadyRegistered该错误表明传递给cudaHostRegister()的内存范围已被注册。
cudaErrorHostMemoryNotRegistered此错误表明传递给cudaHostUnregister()的指针与任何当前注册的内存区域都不对应。
cudaErrorOperatingSystem此错误表示OS调用失败。
cudaErrorStartupFailure这表明CUDA运行时内部启动失败。
cudaErrorApiFailureBase任何未处理的CUDA驱动程序错误都会添加到该值,并通过运行时返回。 CUDA的生产版本不应返回此类错误。