自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 国内快速下载huggingface模型

【代码】国内快速下载huggingface模型。

2024-03-27 19:51:10 454

原创 ImportError: /opt/hpcx/ucc/lib/libucc.so.1: undefined symbol: ucs_mpool_params_reset

【代码】ImportError: /opt/hpcx/ucc/lib/libucc.so.1: undefined symbol: ucs_mpool_params_reset。

2024-03-27 13:54:30 420

原创 ubuntu安装mpi4py报错 ERROR: Failed building wheel for mpi4py

方法一:升级pip(未解决)

2024-03-27 11:35:52 570

原创 C++11多线程笔记四(部署中的生产者消费者模式)

部署中多线程常用组件:thread, join, joinable, detach, mutex, promise, future, condition_variable, 生产者消费者模式。

2023-07-12 19:50:16 277

原创 C++11多线程笔记三(Mutex)

而是由多条汇编指令完成的,因此多个线程对同一个变量进行读写操作就会出现不可预期的操作。比如:假定counter当前值为10,线程1读取到了10,线程2也读取到了10,分别执行自增操作,线程1和线程2分别将自增的结果写回counter,不管写入的顺序如何,counter都会是11,但是线程1和线程2分别执行了一次自增操作,与我们所期望的结果12不符。有时候会发生死锁:假设线程1上锁成功,线程2上锁等待,但是线程1上锁成功后,抛出异常并退出,没有来得及释放锁,导致线程2“永久的等待下去”,此时就发生了死锁。

2023-07-08 22:15:29 201

原创 Leetcode笔记四(栈)

栈:先进后出。

2023-07-05 11:16:20 117

原创 LeetCode笔记三(二分查找)

二分查找时间复杂度o(log n)

2023-07-04 11:15:18 106

原创 C++笔记四(右值引用)

可以对表达式取地址(&)的就是左值,否则为右值被声明出来的左值引用和右值引用都是左值,因为被声明出来出来的的左值引用和右值引用都是有地址的。是为了转移对象的所有权,其功能是把左值强制转换为右值单纯的不会有性能提升。移动语义就是为了减少拷贝std::move将左值转为右值引用,这样就可以重载到移动构造函数了,移动构造函数将指针赋值一下就好了,不用深拷贝了,提高性能。万能引用:函数模板,既可以接左值引用,也可以接右值引用,但当一个右值作为参数进行传参时,相应函数接口在接收该值时,会将该值识别成左值。

2023-07-03 10:17:58 945

原创 LeetCode笔记一(二叉树)

int val;} };二叉树的构造前序遍历,先构造中间节点,或者通过递归函数的返回值来添加、删除节点从中序与后序遍历序列构造二叉树(106)合并二叉树(617)在二叉搜索树中插入一个节点(701)在二叉搜索树中删除一个节点(450)修剪二叉搜索树(669)构造一棵平衡二叉搜索树(108)求普通二叉树的属性后序遍历,通过递归函数的返回值做计算对称二叉树(101)二叉树的最大深度(104)二叉树的最小深度(111)平衡二叉树(110)求二叉搜索树的属性。

2023-07-02 10:31:37 28

原创 LeetCode笔记二(回溯总结)

子集、组合:子集(78)、子集 II(90)、组合(77)、组合总和(39)、组合总和 II(40)全排列:全排列(46)、全排列 II(47)、字符串的排列(567)、字母大小写全排列(784)搜索:解数独(37)、单词搜索(79)、N皇后(51)、分割回文串(131)、二进制手表(401)子集、组合与排列是不同性质的概念。子集、组合是无关顺序的,而排列是和元素顺序有关的,如 [1,2] 和 [2,1] 是同一个组合(子集),但 [1,2] 和 [2,1] 是两种不一样的排列!!!!

2023-07-01 19:51:25 34

原创 C++11多线程笔记二(创建线程)

使用 joinable() 函数在编程中进行线程状态的检查,以避免对不可被加入的线程进行错误的操作。它返回一个布尔值,指示线程是否可被加入(joinable)。对象在析构时要检查线程的状态,如果线程还在运行且未被。类的成员函数,用于检查线程是否可以被。两个成员函数,用于控制线程的行为。处理,那么就会引发终止。接受可调用对象创建线程。

2023-06-29 21:03:04 171

原创 C++11多线程笔记一(多线程简介)

每个线程可以独立的运行不同的指令序列,但是线程不独立的拥有资源,依赖于创建它的进程而存在。即同一进程中的多个线程共享相同的地址空间,可以访问进程中的大部分数据,指针和引用可以在线程间进行传递。由于缺少操作系统提供的保护机制,在多线程共享数据及通信时,需要保证对共享数据段的操作是以预想的操作顺序进行的,并且要极力的避免。总之,并发是指多个任务之间的逻辑上的同时执行,而并行是指多个任务之间的物理上的同时执行。是依赖于C++语言的,是 C++ 标准库中提供的用于创建和管理线程的类,使用。编写的程序是跨平台的。

2023-06-28 23:58:23 42

原创 TensorRT笔记十二(yolov5旋转框检测及部署)

使用五参数定义旋转框longside: 旋转矩形框的最长边shortside: 与最长边对应的另一边Θ: x轴顺时针旋转遇到最长边所经过的角度,Θ∈[0, 180)

2023-06-27 10:47:54 1485 1

原创 C++笔记三(CMake)

在使用gcc/g++编译的时候定义宏 # 常用场景: # -DDEBUG 定义DEBUG宏,可能文件中有DEBUG宏部分的相关信息,用个DDEBUG来选择开启或关闭 DEBUG// -Dname 定义宏name,默认定义内容为字符串“1” # include <stdio.h> int main() {} // 1. 在编译的时候,使用gcc -DDEBUG main.cpp // 2. 第七行代码可以被执行语法:project(projectname [CXX] [C] []Java)

2023-06-26 23:29:40 76 1

原创 tensorRT笔记十一(YOLOv5模型导出编译和推理)

【代码】tensorRT笔记十一(YOLOv5模型导出编译和推理)

2023-06-21 20:37:57 456

原创 TensorRT笔记十(yolov5后处理)

yolov5的输出为(1)其中85表示为5+80,即cx, cy, width, height, objness(框里是否含有目标), classification * 80类别置信度(2)25200 = (20 * 20 + 40 * 40 + 80 * 80) * 3, 其中20 * 20, 40 * 40, 80 * 80分别是提取深、中、浅层的网格大小,浅层用来预测小目标,深层用来预测大目标;* 3是因为每个点有三种anchor使用核函数对yolov5推理结果进行解码并恢复成框。

2023-06-20 10:12:15 3389 1

原创 ubuntu18.04安装shutter并恢复edit功能

键盘快捷键中加入shutter设置选中区域快捷键。

2023-06-17 22:30:52 251

原创 tensorRT笔记九(int8量化)

实现int8熵校准器(Int8EntropyCalibrator类),继承自属于nvinfer1的IInt8EntropyCalibrator2类,覆盖其中的一些函数,实现自己的需求。writeCalibrationCache:标定结束后,调用该函数,储存标定后的结果,多次标定可以使用该缓存实现加速。getBatch:告诉引擎,这次标定的输入数据是什么,把指针赋值给bindings,返回false说明已没有数据了。getBatchSize:告诉引擎,这次标定的batch大小。配置int8标定数据读取工具。

2023-06-16 12:25:28 701 3

原创 TensorRT笔记八(动态推理)

注:若onnx文件,则onnx文件打开后应该看到动态或-1模型中若存在reshape类操作,reshape参数必须随动态进行计算(大部分时候这有问题)除非全卷积网络,大部分时候只需要为batch_size维度设置为动态,其他维度避免设置动态2.配置profilecreate: set: 设置, , 的一系列输入尺寸范围add:添加profile到网络配置中二、推理阶段明确当前推理时,使用的数据输入大小

2023-05-03 22:33:49 587

原创 TensorRT笔记七(模型推理)

以一个简单的CNN网络为例。

2023-05-02 16:55:12 224

原创 TensorRT笔记六(构建模型并编译)

2.输入,模型结构和输出的基本信息。

2023-04-28 13:31:28 362

原创 C++笔记二(静态成员函数、匿名对象)

【代码】C++笔记二(静态成员函数、匿名对象)

2023-04-15 19:26:53 461

原创 C++笔记一(全局变量、局部变量、静态局部变量)

【代码】C++笔记一(全局变量、局部变量、静态局部变量)

2023-04-14 20:54:43 147

原创 STL笔记一(reserve)

【代码】STL笔记一(reserve)

2023-04-07 09:39:38 319

原创 CUDA笔记一(atomicAdd)

【代码】CUDA笔记一(atomicAdd)

2023-04-06 00:17:34 2313

原创 TensorRT笔记五(Warpaffine)

【代码】TensorRT笔记五(Warpaffine)

2023-04-05 00:03:30 132

原创 TensorRT笔记四(ShareMemory)

共享内存更靠近计算单元,访问速度更快(共享内存通常作为访问全局内存(GlobalMemory)的缓存使用利用共享内存实现线程间的通信。

2023-04-03 11:04:48 168

原创 TensorRT笔记三(核函数)

核函数是cuda编程的关键,通过**.cu**创建cudac程序文件,把cu交给nvcc编译,才能识别cuda语法;cu文件当做正常cpp写即可,他是cpp的超集,兼容支持cpp的所有特性核函数需要使用__global__修饰,由host调用;设备函数需要使用__device__修饰,由device调用;主机函数使用__host__修饰,由host调用;共享变量由__shared__修饰核函数内的代码在GPU上运行,故在核函数内部调用某个非常规函数需要使用__device__修饰。

2023-04-02 10:40:35 199

原创 TensorRT笔记二(RuntimeAPI)

流是一种基于context之上的任务管道抽象,可以当作一个队列,一个context可以创建n个流流是异步控制的主要方式nullptr表示默认流,每个线程都有自己的默认流指令发出后,流队列储存的是指令参数,不能加入队列后立即释放参数指针,否则会导致执行该指令时指针失效而出错。

2023-03-31 14:32:56 235

原创 TensorRT笔记一(CUDA-Driver)

TensorRT学习笔记

2023-03-30 18:06:58 268

原创 numcpp、boost安装配置

numcpp、boost安装配置流程

2023-03-05 21:36:17 721 3

原创 libtorch配置报错:0x00007FF969CD478C 处(位于 libtorch_test.exe 中)有未经处理的异常: Microsoft C++ 异常: c10::Error,位于内存

libtorch报错:0x00007FF969CD478C 处(位于 libtorch_test.exe 中)有未经处理的异常: Microsoft C++ 异常: c10::Error,位于内存位置 0x000000EA488FEA00 处

2023-03-05 21:26:11 600

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除