当前位置: 首页 > 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.lqws.cn/news/502633.html

相关文章:

  • 【Linux网络编程】多路转接I/O(一)select,poll
  • HTML炫酷烟花
  • ✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub
  • Flask(二) 路由routes
  • 零知开源——STM32F4实现ILI9486显示屏UI界面系列教程(三):记事本功能实现
  • bmc TrueSight 监控mysql配置
  • prometheus+grafana+Linux监控
  • Linux 中的信号处理方式详解
  • 【机器学习深度学习】多层神经网络的构成
  • 在仓颉开发语言中使用数据库
  • TCP/UDP协议深度解析(一):UDP特性与TCP确认应答以及重传机制
  • 计算机网络第九章——数据链路层《介质访问控制》
  • C++(面向对象编程——多态)
  • 曼昆《经济学原理》第九版 宏观经济学 第二十六章货币增长与通货膨胀
  • python中学物理实验模拟:摩檫力
  • BI财务分析 – 反映盈利水平利润占比的指标如何分析(下)
  • iwebsec靶场sqli注入(2)
  • [Linux] Linux用户和组管理
  • GoAdmin代码生成器实践
  • 大模型项目实战:业务场景和解决方案
  • TongWeb替换tomcat
  • Linux Sonic Agent 端部署(详细版)(腾讯云)
  • MySQL:深入总结锁机制
  • 系统架构设计的全方位视角:深入解析4+1视图模型及其应用实践
  • prometheus+grafana+MySQL监控
  • 飞算 JavaAI 插件炸场!一小时搭图书管理系统
  • 从拥塞控制算法热交换到内核错误修复
  • Golang Kratos 系列:业务分层的若干思考(一)
  • 从用户到社区Committer:小米工程师隋亮亮的Apache Fory成长之路
  • WPF/Net Core 简单显示PDF