转载:CUDA 错误类型

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的生产版本不应返回此类错误。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cv::cuda::GpuMat是OpenCV中用于在GPU上进行图像处理的类。它是cv::Mat的一个派生类,用于在GPU内存中存储图像数据。cv::cuda::GpuMat提供了一些函数和操作符,可以在GPU上执行各种图像处理操作,如图像滤波、图像转换、图像拼接等。 使用cv::cuda::GpuMat可以将图像数据传输到GPU内存中,并在GPU上进行并行计算,可以提高图像处理的速度。另外,cv::cuda::GpuMat还可以与其他GPU库进行无缝集成,如NVIDIA的CUDA库。 在使用cv::cuda::GpuMat之前,需要确保计算机上已安装了支持CUDA的显卡,并安装了相应的CUDA驱动和CUDA工具包。此外,还需要在编译和链接OpenCV程序时启用CUDA支持。 下面是一个简单的示例代码,展示了如何使用cv::cuda::GpuMat进行图像处理: ```cpp #include <opencv2/opencv.hpp> #include <opencv2/cudaimgproc.hpp> int main() { cv::Mat src_host = cv::imread("input.jpg", cv::IMREAD_COLOR); cv::cuda::GpuMat src_device; src_device.upload(src_host); // 将图像数据传输到GPU内存 cv::cuda::GpuMat dst_device; cv::cuda::bilateralFilter(src_device, dst_device, 5, 50, 50); // 在GPU上进行双边滤波 cv::Mat dst_host; dst_device.download(dst_host); // 将处理结果从GPU内存传输回主机内存 cv::imshow("Input", src_host); cv::imshow("Output", dst_host); cv::waitKey(); return 0; } ``` 这个示例中,首先使用cv::imread函数从文件中读取一张图像,然后将图像数据传输到GPU内存中的cv::cuda::GpuMat对象src_device中。接着,调用cv::cuda::bilateralFilter函数在GPU上进行双边滤波,将结果存储在cv::cuda::GpuMat对象dst_device中。最后,将处理结果从GPU内存传输回主机内存,并使用cv::imshow函数显示输入图像和输出图像。 希望这个示例对你有帮助!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值