当前位置: 首页 > news >正文

OpenCV CUDA模块设备层-----检查 CUDA 错误并输出调试信息内联函数checkCudaError()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

在主机端(Host)检查 CUDA API 调用是否返回错误,并在出错时打印错误信息和调用堆栈,然后终止程序。
它类似于标准的 CUDA 错误检查宏(如常见的 cudaCheckError() 或 checkCudaErrors()),但它是 OpenCV 内部实现的一个封装。

函数原型

__host__ __forceinline__ void cv::cudev::checkCudaError 	
(cudaError_t  	err,const char *  	file,const int  	line,const char *  	func 
) 		

参数

参数名类型描述
errcudaError_tCUDA API 返回的错误码(如 cudaSuccess, cudaErrorMemoryAllocation 等)
fileconst char*当前源文件名(通常由 FILE 宏传入)
lineint当前行号(通常由 LINE 宏传入)
funcconst char*当前函数名(可选,可以传入 FUNCTION 或 “”)

代码示例

#include <opencv2/core/cuda.hpp>
#include <opencv2/cudev/common.hpp> // 包含 checkCudaError 和 CV_CUDEV_SAFE_CALL
#include <iostream>using namespace cv::cudev;// 示例函数:分配 GPU 内存并进行简单操作
void testGpuMemory() {float* d_data = nullptr;size_t size = 1024 * 1024 * 10; // 分配 10MB 空间(合理大小)std::cout << "Allocating GPU memory..." << std::endl;CV_CUDEV_SAFE_CALL(cudaMalloc(&d_data, size));std::cout << "Setting memory to zero..." << std::endl;CV_CUDEV_SAFE_CALL(cudaMemset(d_data, 0, size));std::cout << "Freeing GPU memory..." << std::endl;cudaFree(d_data);
}int main() {try {testGpuMemory();std::cout << "GPU memory operations succeeded." << std::endl;} catch (...) {std::cerr << "An exception occurred during GPU operation." << std::endl;return -1;}return 0;
}

运行结果

Allocating GPU memory...
Setting memory to zero...
Freeing GPU memory...
GPU memory operations succeeded.
http://www.lryc.cn/news/574513.html

相关文章:

  • 【STM32】JTAG / SWD 调试原理简析
  • IN子查询与JOIN的区别理解
  • 数据赋能(319)——安全与合规——数据安全可控
  • 烟花爆竹生产企业库房存储安全风险预警系统
  • 前端如何让用户回到上次阅读的位置?
  • 医学数据分析实战:冠心病发病因素可视化
  • vue3+echarts实现tab切换多个图表
  • 微信小程序节点相关总结
  • 服务器常见问题以及解决方案
  • 学习threejs,使用kokomi、gsap实现图片环效果
  • 【AI落地应用实战】Chaterm:重新定义终端操作的AI智能工具
  • mapbox基础,导出地图
  • 打表法从原理到实战详解
  • RabbitMQ + JMeter 深度集成指南:中间件性能优化全流程解析!
  • uniapp/Vue/微信小程序瀑布流,小红书瀑布流,豆瓣瀑布流,淘宝瀑布流布局
  • 微信小程序如何实现通过邮箱验证修改密码功能
  • ORACLE表空间扩容
  • jmeter接口测试
  • Github 2025-06-24Python开源项目日报 Top10
  • PyTorch topk() 用法详解:取最大值
  • Gym安装
  • 数据结构day2
  • 数组题解——​合并区间【LeetCode】
  • 使用 PyAEDT 设计参数化对数周期偶极子天线 LPDA
  • 如何解决TCP传输的“粘包“问题
  • HTTP面试题——缓存技术
  • Qt面试题汇总
  • 记录一下小程序城市索引栏开发经历
  • ✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub
  • Rocky8使用gvm配置Go多版本管理的微服务开发环境