tensorrt C++推理

news2024/12/26 10:36:43
	char* trtModelStream{ nullptr }; //char* trtModelStream==nullptr;  开辟空指针后 要和new配合使用,比如89行 trtModelStream = new char[size]
	size_t size{ 0 };//与int固定四个字节不同有所不同,size_t的取值range是目标平台下最大可能的数组尺寸,一些平台下size_t的范围小于int的正数范围,又或者大于unsigned int. 使用Int既有可能浪费,又有可能范围不够大。

	std::ifstream file("D:/match/SimpleNet/pt/feature_aggregator.trt", std::ios::binary);
	std::cout << file.good();
	if (file.good()) {
		std::cout << "load engine success" << std::endl;
		file.seekg(0, file.end);//指向文件的最后地址
		size = file.tellg();//把文件长度告诉给size
		file.seekg(0, file.beg);//指回文件的开始地址
		trtModelStream = new char[size];//开辟一个char 长度是文件的长度
		assert(trtModelStream);//
		file.read(trtModelStream, size);//将文件内容传给trtModelStream
		file.close();//关闭
	}
	else {
		std::cout << "load engine failed" << std::endl;
		return 1;
	}
	
	IRuntime* runtime = createInferRuntime(gLogger);
	ICudaEngine* engine = runtime->deserializeCudaEngine(trtModelStream, size);
	IExecutionContext *context = engine->createExecutionContext();

	void* buffers[2];

	// In order to bind the buffers, we need to know the names of the input and output tensors.
	// Note that indices are guaranteed to be less than IEngine::getNbBindings()
	const int inputIndex = engine->getBindingIndex(INPUT_BLOB_NAME);
	const int outputIndex = engine->getBindingIndex(OUTPUT_BLOB_NAME);
	// Create GPU buffers on device
	cudaMalloc(&buffers[inputIndex], 3 * INPUT_H * INPUT_W * sizeof(float));
	cudaMalloc(&buffers[outputIndex], OUTPUT_SIZE * sizeof(float));

	context->setTensorAddress(INPUT_BLOB_NAME, buffers[inputIndex]);
	context->setTensorAddress(OUTPUT_BLOB_NAME,buffers[outputIndex]);

	cudaStream_t stream;
	cudaStreamCreate(&stream);
	Mat src = imread("D:/dataset/coco/blag/5FC4EZ01A00009_CD_20221223111215_1.png", 1);
	// DMA input batch data to device, infer on the batch asynchronously, and DMA output back to host
	//uchar * data = new uchar[512 * 512 * 3];
	cudaMemcpyAsync(buffers[inputIndex],src.data,3 * INPUT_H * INPUT_W * sizeof(float), cudaMemcpyHostToDevice, stream);
	//context.enqueue(batchSize, buffers, stream, nullptr);
	context->enqueueV3(stream);
	
	// 假设CUDA stream中的数据是一张图像,大小为128x128,数据类型为float
	int width = 4096;
	int height = 512;
	//int channel = 512;
	size_t dataSize = width * height * sizeof(float);

	// 在主机内存中分配空间
	float* hostData = new float[dataSize];

	//在CUDA stream中分配空间
	float* deviceData = nullptr;
	//cudaError_t cudaMemcpy(void *dist, const void* src, size_t count, CudaMemcpyKind kind);
	cudaMalloc((void **)&deviceData, dataSize);

	//cudaMalloc(float(**)&addr, n * sizeof(float))

	// 将数据从CUDA stream拷贝到主机内存
	cudaMemcpyAsync(hostData, deviceData, dataSize, cudaMemcpyDeviceToHost, stream);
	// 等待CUDA操作完成
	cudaStreamSynchronize(stream);
	// 将主机内存中的数据转换为cv::Mat类型
	cv::Mat img = cv::Mat::zeros(cv::Size(width,height),CV_8U);
	memcpy(img.data,hostData,dataSize);

onnx导engine:

trtexec.exe --onnx=resnet18.onnx --saveEngine=resnet18.engine --fp16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1038700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通讯网关软件012——利用CommGate X2OPC实现MS SQL数据写入OPC Server

本文推荐利用CommGate X2OPC实现从MS SQL服务器获取数据并写入OPC Server。CommGate X2OPC是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;实现从MS SQL数据库获取数据并写入OPC Server。 【…

(Vue2)智慧商城项目

新增两个目录api、utils api接口模块&#xff1a;发送ajax请求的接口模块 utils工具模块&#xff1a;自己封装的一些工具方法模块 第三方组件库vant-ui PC端&#xff1a;element-ui&#xff08;element-plus&#xff09; ant-design-vue 移动端&#xff1a;vant-ui Mint UI…

Vue3最佳实践 第五章 Vue 组件应用 3( Slots )

5.4 Slots 我们已经了解到组件能够接收任意类型的 JavaScript 值作为 props&#xff0c;但组件要如何接收模板内容呢&#xff1f;在某些场景中&#xff0c;我们可能想要为子组件传递一些模板片段&#xff0c;让子组件在它们的组件中渲染这些片段。Slots 可用于将Html内容从父组…

怎么样深入学习一门技术(Python)

进入官网 Python官网文档 https://docs.python.org/zh-cn/ 边敲代码边理解 多看教学视频 狠狠的花时间

Android 使用kotlin+注解+反射+泛型实现MVP架构

一&#xff0c;MVP模式的定义 ①Model&#xff1a;用于存储数据。它负责处理领域逻辑以及与数据库或网络层的通信。 ②View&#xff1a;UI层&#xff0c;提供数据可视化界面&#xff0c;并跟踪用户的操作&#xff0c;以便通知presenter。 ③Presenter&#xff1a;从Model层获…

Securing TEEs With Verifiable Execution Contracts【TDSC`23】

目录 摘要引言贡献 背景Intel SGX侧信道攻击Intel处理器的硬件扩展 概述威胁模型SGX已存的安全威胁侧信道泄露操作系统相关的威胁现有防御的限制 可验证的执行合同作为防御 摘要 最近的研究表明&#xff0c;可信执行环境&#xff0c;如Intel Software Guard Extensions&#x…

Nginx 背锅解析漏洞

Nginx 背锅解析漏洞 文章目录 Nginx 背锅解析漏洞1 在线漏洞解读:2 环境搭建3 影响版本&#xff1a;4 漏洞复现4.1 访问页面4.2 上传文件 4.3 上传失败4.4 使用bp进行分析包4.5 对返回图片位置进行访问4.6 执行php代码技巧-图片后缀加./php4.7 分析原因 --》cgi.fix_pathinfo--…

工艺防错指导、可视化工具管理——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-智能扭矩控制-SunTorque 拧紧的定义——运用拧紧工具及螺栓&#xff0c;使被联接体紧密贴合&#xff0c;并能承受一定的载荷&#xff0c;且被连接体间具备足够的夹紧力&#xff0c;以确保被联接零件的可靠联接和正常工作。 从定义中前六个字“运用…

解读:ISO 14644-21:2023《洁净室及相关受控环境:悬浮粒子采样》发布指导粒子采样!

药品洁净实验室环境监测结果是否满足微生物检测需求&#xff0c;直接决定检测结果的有效性准确性&#xff0c;进行药品微生物检测&#xff0c;必须对实验环境进行日常和定期监测&#xff0c;其内容包括非生物活性的空气悬浮粒子数及有生物活性的微生物监测。 悬浮粒子监测是保证…

python百钱百鸡

编写程序&#xff0c;解决“百钱百鸡”问题。 一只公鸡值五钱&#xff0c;一只母鸡值三钱&#xff0c;三只小鸡值一钱。 源代码&#xff1a; for a in range(1, 101): for b in range(1, 101): for c in range(1, 101): if (a * 5 b * 3 c / 3 100)…

CSRF攻击

防御策略 过滤判断换referer头&#xff0c;添加tocken令牌验证&#xff0c;白名单 CSRF攻击和XSS比较 相同点&#xff1a;都是欺骗用户 不同点&#xff1a; XSS有攻击特征&#xff0c;所有输入点都要考虑代码&#xff0c;单引号过滤 CSRF没有攻击特征&#xff0c;利用的点…

城市智慧公厕:引领科技创新的新时代

城市智慧公厕已经成为当下社会治理模式的升级范式&#xff0c;催生了无限的科技创新。如智慧公厕源头厂家广州中期科技有限公司&#xff0c;所推出的智慧公厕整体解决方案&#xff0c;除基本的厕位监测与引导、环境监测与调节、安全防范与管理、保洁考勤管理、多媒体交互、综合…

数字化转型的五个等级及思考

数字化转型是当前企业和社会关注的热点话题。然而&#xff0c;对于数字化转型的五个等级及其思考&#xff0c;并没有一个清晰的概述。以下是我对数字化转型的五个等级及其思考的简要探讨。 第一等级&#xff1a;基础设施升级 在数字化转型的初始阶段&#xff0c;企业需要对其基…

长期用眼不再怕!NineData SQL 窗口支持深色模式

您有没有尝试过被明亮的显示器闪瞎眼的经历&#xff1f; 在夜间或低光环境下&#xff0c;明亮的界面会导致许多用眼健康问题&#xff0c;例如长时间使用导致的眼睛疲劳、干涩和不适感&#xff0c;同时夜间还可能会抑制褪黑素分泌&#xff0c;给您的睡眠质量带来影响。 这些问…

uni-app:实现picker下拉列表

效果 代码 <template><view class"container"><picker name"info" change"bindPickerChange9" :value"index9" :range"selectDatas9"><view class"right"><view class"right_l…

Nginx负载均衡详解

一、负载均衡介绍 1、负载均衡的定义 单体服务器解决不了并发量大的请求&#xff0c;所以&#xff0c;我们可以横向增加服务器的数量&#xff08;集群&#xff09;&#xff0c;然后将请求分发到各个服务器上&#xff0c;将原先请求集中到单个服务器上的情况改为将请求分发到多…

【EI会议】第三届大数据、人工智能与风险管理国际学术会议 (ICBAR 2023)

第三届大数据、人工智能与风险管理国际学术会议 (ICBAR 2023) 2023 3rd International Conference on Big Data, Artificial Intelligence and Risk Management 第三届大数据、人工智能与风险管理国际学术会议&#xff08;ICBAR2023&#xff09;将于2023年11月24-26日在中国成…

18643 鸡马立克氏病诊断技术

声明 本文是学习GB-T 18643-2021 鸡马立克氏病诊断技术. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了鸡马立克氏病临床诊断&#xff0c;以及病毒分离、琼脂免疫扩散试验、PCR 检测和荧光定量 PCR 检测等实验室检测的技术要求…

【通世智库】彭子商:秋风集

我的人生阅历是丰富的&#xff0c;感受是复杂的。 我出生于1949年&#xff0c;父亲是中国老一代旧知识分子&#xff0c;是重庆宽仁医院(教会医院)最后一任院长。【作者&#xff1a;彭子商;来源&#xff1a;通世智库;编撰&#xff1a;张小青】 我同共和国一起成长&#xff0c;经…