- 博客(71)
- 资源 (1)
- 收藏
- 关注
原创 SAT分离轴定理的c++/python实现
分离轴定理通过投影和比较的方式,能够有效地判断两个凸多边形是否相交。它利用边法线作为可能的分离轴,并通过检测是否存在投影不重叠的轴来快速判断是否有碰撞。
2024-10-03 15:01:54 814
原创 当库中无符号时,如何定位报错代码的行数
原理是捕获coredump时对应的信号,再回调里进行打印是 Unix 系统中的一个信号,表示“段错误”(Segmentation Fault)。当程序试图访问它没有权限访问的内存区域时,操作系统会向该进程发送信号。
2024-05-23 19:19:07 955
原创 离线编译 onnxruntime-with-tensortRT 1.15
记录为centos7的4090开发机离线编译onnxruntime的过程,因为在离线的环境,所以踩了很多坑。这里根据官网的推荐安装1.15 版本的onnx因为离线环境,所以很多都是要自己手动编译安装的onnx 源码 1.51cmake 3.26.6 (本地环境的3.16不可以)cuda 11.8gcc11(要求gcc>7)patch是onnx给他的某些依赖库打补丁用的,centos中yum install patch即可,这里本地只能自己编译。
2024-01-23 21:32:01 1147
原创 cuda中的定点数优化技术
这里学习一下定点数的优化操作,实际上就是以整数代替浮点数,乘除法的操作均通过左右移位来实现,适合在算力非常低的场景下使用,极致的压榨性能。定点数介绍以下给出函数的具体实现,函数的作用是1 把NV12(YUV420,uv交替出现)格式的图像转换成YUV444的格式2 进行crop/resize的算子操作3 同时对数据做toFloat操作具体实现过程是,把Y数据经过放入tmpImagecuda中,紧跟通过提取UV的数据,再次使用放入tmpImagecuda后续空间中。
2024-01-22 01:29:07 999
原创 工作小计- RGB相关算子实现
项目中的模型一直都是直接操作NV12的yuv格式数据,这次的模型只支持RGB格式的输入,正好来自己实现对应的算子。这里记录一下对应算子的实现过程,主要涉及到NV12到RGB的变换,RGB的crop/resize操作,对于数据的Norm/ToFloat操作,调整Layout等等。
2024-01-21 19:49:22 464
原创 工作小记 cv-cuda使用
最近要实现RGB相关cuda算子的功能,最终通过自己手写核函数实现。这里记录一下对cv-cuda的调研和使用,因为项目要求gcc-5,而cv-cuda要求gcc11而放弃使用,但是相关的记录,以及使用方法都要记录下来,以便下次项目一旦更新gcc(笑)时再次使用cv-cuda官网连接安装指南。
2024-01-21 18:57:32 1236
原创 工作小计-GPU硬编以及依赖库 nvcuvid&nvidia-encode
已经是第三篇关于编解码的记录了。项目中用到GPU编码很久了,因为yuv太大,所以编码显得很重要。这次遇到的问题是环境的搭建问题。需要把开发机上的环境放到docker中,以保证docker中同样可以进行GPU的编码。
2023-10-27 22:11:22 1460
原创 inode和逻辑块,目录的结构,挂载的实现 源码级分析linux内核的文件系统的结构
封装了set_bitclear_bit等操作位图的宏对应i节点位图和逻辑块位图有对应的四个函数free_inodenew_inodefree_blocknew_block。
2023-03-10 16:05:54 416
原创 shared_ptr,weak_ptr,enable_shared_from_this,shared_from_this原理及使用场景
shared_ptr内部计数器是原子变量增减引用计数时是线程安全的操作一个函数接口,返回一个指向当前对象的shared_ptr智能指针,方法就是继承enable_shared_from_this类,然后通过调用从基类继承来的shared_from_this()方法返回指向同一个资源对象的智能指针shared_ptr。
2023-03-09 01:16:35 385
原创 buffer它到底做了个啥,源码级分析linux内核的文件系统的缓冲区
buffer的目的,设计的思想,减少IObuffer的管理,hash表+双链表,淘汰策略LRUbuffer中uptodatedirt来控制是否发起IO读写,lock(只在lock_buffer中上锁,做保护),count有无引用作为分配空闲buffer的依据。
2023-03-06 20:42:02 765
原创 fork的黑科技,它到底做了个啥,源码级分析linux内核的内存管理
1 逻辑地址:站在进程角度2 线性地址:站在操作系统角度3 物理地址:站在内存角度更加体现了中间层思想在操作系统中的应用。1 2之间的转化看start_code,操作系统对进程的虚拟化2 3之间的转化看分页,分段,页表,页访问属性,put_page将两者联系在一起。
2023-03-06 00:01:25 529
原创 zlMediaKit 3 socket模块--怎么封装socket,怎么connect listen/bind write read
socket
2022-11-06 20:29:35 468
原创 【课外阅读】zk
ZooKeeper 由雅虎研究院开发,后来捐赠给了 Apache。ZooKeeper 是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于 Paxos 算法的ZAB 协议完成的。
2022-09-24 11:51:00 1254
原创 工作小计 zookpeer3.8 C api环境搭建
高版本zookeeperZooKeeper3.7.0 编译客户端zookeeper-client成功编译,解决不能直接 ./configure make make install三步走失败的问题编译源码目录下只有configure.ac文件和Makefile.am文件的工程github zk readmelinux zk readme最终生成单多线程的客户端库Zookeeper C API开发环境
2022-08-21 23:17:50 537
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人