![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Cuda与TensorRT
文章平均质量分 79
Cuda和TensorRT的个人笔记记录
Nice_cool.
主要搞点云这块 ,做个学习的记录还有诸多技术笔记
展开
-
Cuda与TensorRT 实践记录 - 专栏索引
Cuda与TensorRT 实践记录 - 专栏索引自己学习和实践的笔记,在这里做个记录,方便自己学习和检索。原创 2023-10-10 01:17:48 · 82 阅读 · 0 评论 -
CUDA编程 - clock 学习记录
在CUDA编程中,共享内存是一种特殊的内存类型,它是在块级别共享的。共享内存的主要优势在于其低延迟和高带宽,适合于需要快速访问和多次读写的数据。原创 2024-07-14 00:22:03 · 599 阅读 · 0 评论 -
CUDA编程 - asyncAPI 学习记录
CUDA流处理:使用cudaMemcpyAsync进行异步内存拷贝,<<<blocks, threads>>>语法启动并发执行的CUDA内核函数increment_kernel。获取设备属性:cudaGetDeviceProperties函数获取指定设备的属性,这些属性包括设备名称等信息。内存分配:使用cudaMallocHost分配CPU上可访问的页锁定内存,cudaMalloc分配设备上的内存。创建CUDA事件和计时器:CUDA事件用于记录时间,计时器用于测量CPU执行时间。原创 2024-07-12 00:37:41 · 407 阅读 · 0 评论 -
模型部署 - onnx的导出和分析 - onnx 的架构和 onnx helper 的使用 - 学习记录
首先来了解一下 学习 onnx 架构和 onnx helper 的使用的目的。一般模型部署的流程是前处理+模型推理+后处理,然后c++ 上进行推理。前处理(与tensorRT无关)模型推理(生成的engine交给tensorRT去做前向传播)后处理(与tensorRT无关)模型推理部分是指利用 tensorRT 的 onnx 解析器编译生成 engine (即转换为tensorRT能看懂的模型)。1、有些时候我们应该把后处理部分在onnx模型中实现,降低后处理复杂度。原创 2024-03-20 23:17:15 · 1220 阅读 · 0 评论 -
模型部署 - BevFusion - 思路总结
PyTorch 转 ONNX 转 TRTFP16 优化cuda-graph 优化INT8 量化优化ONNX 模型层面优化Pipeline 优化模型内深度优化我们需要先快速的去了解网络,然后将其转换成 Onnx 和 Tensorrt,然后再去根据结果进行二次优化。原创 2024-03-04 00:10:04 · 1238 阅读 · 1 评论 -
模型部署 - onnx的导出和分析 - onnx 注册自定义算子 - 学习记录
第一步:手写一个算子,然后注册一下第二步:将算子放进模型定义第三步:利用 torch.onnx.export() 编写onnx 导出函数一般我们自定义算子的时候,有以下流程编写算子并注册将算子放进模型定义利用 torch.onnx.export() 编写 onnx 导出函数return x。原创 2024-03-03 16:52:24 · 742 阅读 · 2 评论 -
模型部署 - onnx 的导出和分析 - PyTorch 导出 ONNX - 学习记录
上面是 onnx 可以直接被导出的情况,是因为对应的 pytorch 和 onnx 版本都有相应支持的算子在里面。与上面例子不同的是,这个注册方式跟底层文件的写法是一样的(文件在虚拟环境中的 torch/onnx/symbolic_opset*.py )比如下面的这个报错,提示当前 onnx 的 opset 版本不支持这个算子,那我们可以去官方手册搜索一下是否在高的版本支持了这个算子。有些算子在 onnx 中是有的,但是在 pytorch 中没被登记,则需要。(实际上就是一个矩阵乘法)原创 2024-03-03 01:02:38 · 2515 阅读 · 0 评论 -
CUDA编程 - 用向量化访存优化 elementwise 核函数 - 学习记录
Element-wise操作是最基础,最简单的一种核函数的类型,它的计算特点很符合GPU的工作方式:对于每个元素单独做一个算术操作,然后直接输出。虽然简单,但深度学习领域,有很多算子都是这个类型。常见的有Add,Mul,Concat,各种激活Sigmoid,Relu及它们的变体,归一化里的BatchNorm都属于这个类型。原创 2024-02-26 23:20:05 · 1268 阅读 · 0 评论 -
CUDA编程 - 用向量化访存优化 - Cuda elementwise - Add(逐点相加)- 学习记录
Element-wise 操作是最基础,最简单的一种核函数的类型,它的计算特点很符合GPU的工作方式:对于每个元素单独做一个算术操作,然后直接输出。Add 函数 :逐点相加传入 数组 a,b,c传入 数据数量 N传出结果 数组c。原创 2024-02-26 17:03:47 · 1797 阅读 · 0 评论 -
CUDA编程 - Nsight system & Nsight compute 的安装和使用 - 学习记录
在 cuda 编程中,经常会用到 Nsight system 和 Nsight compute 进行性能分析等,下面做个学习总结。本篇包括安装和常用分析思路总结,具体实践操作总结会放在下一篇博客。原创 2024-02-23 15:53:42 · 5649 阅读 · 2 评论 -
CUDA编程 - 共享内存 - shared memory - 学习记录
1、共享内存是可受用户控制的一级缓存。2、共享内存是基于存储体切换的架构。所以我们必须要解决存储体冲突的问题数据重复利用全局内存合并线程之间有共享数据4、线程访问共享内存的时候需要排队等候5、以行的方式访问全局内存的时候,性能最好6、在GPU上线程块的大小或者线程束的大小可以理想地映射为数据集的大小。对于一个长为N的数据,我们可以最多用N/2个线程来进行。7、共享内存的主要作用是减少对全局内存的访问,或者改善对全局内存的访问模式。原创 2024-02-14 01:09:01 · 1389 阅读 · 0 评论 -
CUDA编程- - GPU线程的理解 thread,block,grid - 学习记录
3、同一个线程束中的线程存储访问合并在一起了,长方形布局只需要一次访问操作就可以获得连续的内存数据 // 正方形要两次访问。在 blockIdx.x = 1 中, blockDim.x 表示所要求每个线程块启动的线程数量,在这 = 128。3、在核函数中编写单个线程的使用代码,再调用核函数,便可简单的达到 cpu 中 openmp 的多线程方式。在 cpu 中,用 openmp 并行计算,有限的线程数对 128 进行分组运算。2、线程数量的多少是由线程块,线程,线程网格等决定的,原创 2024-01-27 18:02:18 · 1945 阅读 · 2 评论 -
CUDA编程 - cpp文件 和 cu 文件的相互引用 -学习记录
这里记录了在同一个项目中,如何在cpp文件中引用 .cu 文件。原创 2023-10-15 23:57:27 · 397 阅读 · 1 评论 -
CUDA编程 - 使用cuda进行矩阵乘法的加速方法 - 学习记录
🐖:CUDA有规定,一个block中可以分配的 thread 的数量最大是 1024 个线程。如果大于 1024 会显示配置错误。假设是 A(4x8) * B(8x4) = C(4x4)原创 2023-10-16 01:17:02 · 403 阅读 · 0 评论 -
GPU编程与CUDA
一些gpu基础原创 2022-11-21 20:06:20 · 282 阅读 · 0 评论 -
CPU与GPU的基本知识
cpu与gpu的基本知识原创 2022-11-19 00:08:49 · 553 阅读 · 0 评论