- 博客(80)
- 收藏
- 关注
原创 模型部署 - onnx 的导出和分析 - PyTorch 导出 ONNX - 学习记录
上面是 onnx 可以直接被导出的情况,是因为对应的 pytorch 和 onnx 版本都有相应支持的算子在里面。与上面例子不同的是,这个注册方式跟底层文件的写法是一样的(文件在虚拟环境中的 torch/onnx/symbolic_opset*.py )比如下面的这个报错,提示当前 onnx 的 opset 版本不支持这个算子,那我们可以去官方手册搜索一下是否在高的版本支持了这个算子。有些算子在 onnx 中是有的,但是在 pytorch 中没被登记,则需要。(实际上就是一个矩阵乘法)
2024-03-03 01:02:38
5134
原创 CUDA编程 - 用向量化访存优化 elementwise 核函数 - 学习记录
Element-wise操作是最基础,最简单的一种核函数的类型,它的计算特点很符合GPU的工作方式:对于每个元素单独做一个算术操作,然后直接输出。虽然简单,但深度学习领域,有很多算子都是这个类型。常见的有Add,Mul,Concat,各种激活Sigmoid,Relu及它们的变体,归一化里的BatchNorm都属于这个类型。
2024-02-26 23:20:05
2203
原创 CUDA编程 - 用向量化访存优化 - Cuda elementwise - Add(逐点相加)- 学习记录
Element-wise 操作是最基础,最简单的一种核函数的类型,它的计算特点很符合GPU的工作方式:对于每个元素单独做一个算术操作,然后直接输出。Add 函数 :逐点相加传入 数组 a,b,c传入 数据数量 N传出结果 数组c。
2024-02-26 17:03:47
3027
原创 CUDA编程 - Nsight system & Nsight compute 的安装和使用 - 学习记录
在 cuda 编程中,经常会用到 Nsight system 和 Nsight compute 进行性能分析等,下面做个学习总结。本篇包括安装和常用分析思路总结,具体实践操作总结会放在下一篇博客。
2024-02-23 15:53:42
16967
2
原创 工程师每日刷题 -5
智能指针是一个RAII类模型,用于动态分配内存,其设计思想是将基本类型指针封装为(模板)类对象指针,并在离开作用域时调用析构函数,使用delete删除指针所指向的内存空间。智能指针的作用是,能够处理内存泄漏问题和空悬指针问题。分为auto_ptr、unique_ptr、shared_ptr和weak_ptr四种,各自的特点:对于auto_ptr,实现独占式拥有的概念,同一时间只能有一个智能指针可以指向该对象;
2024-02-14 01:26:44
1194
原创 CUDA编程 - 共享内存 - shared memory - 学习记录
1、共享内存是可受用户控制的一级缓存。2、共享内存是基于存储体切换的架构。所以我们必须要解决存储体冲突的问题数据重复利用全局内存合并线程之间有共享数据4、线程访问共享内存的时候需要排队等候5、以行的方式访问全局内存的时候,性能最好6、在GPU上线程块的大小或者线程束的大小可以理想地映射为数据集的大小。对于一个长为N的数据,我们可以最多用N/2个线程来进行。7、共享内存的主要作用是减少对全局内存的访问,或者改善对全局内存的访问模式。
2024-02-14 01:09:01
2250
原创 wsl + vscode 离线配置 ERROR: Faild to download https://update.code.visualstudio.com
很多情况下是没有现成的VS Code Server程序的,需要手动下载。记住上面的Commit ID,可以通过下面的链接下载 vscode-server-linux-x64.tar.gz。然后将vscode-server-linux-x64.tar.gz上传在服务器上的$HOME/.vscode-server/bin文件夹中,解压。在wsl中下载不了 vscode 的核心。运行下面两行命令,建立空的$HOME/.vscode-server/bin文件夹。重新运行 wsl与vs的链接即可。
2024-02-02 16:15:44
3421
2
原创 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
3110
2
原创 工程师每日刷题 -4
CNN 本质上是一个多层感知机 (MLP),其成功的原因关键在于它所采用的【稀疏连接】(局部感受)和【权值共享】的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。,即内联函数是在编译期间直接展开,可以减少函数调用的花销,即是编译阶段就确定调用哪个函数了。多态是依托于类的,多态的使用必须是在类创建以后,而构造函数是用来创建构造函数的,所以不行。与虚函数的作用不是一路的。C++不支持友元函数的继承,不能继承的函数指定不是虚函数。多态是依托于类的,要声明的多态的函数前提必须是虚函数。
2023-11-30 10:48:46
509
原创 工程师每日刷题 -3
对激活函数进行求导,如果此部分大于1,那么层数增多的时候,最终的求出的梯度更新将以指数形式增加,即发生梯度爆炸,如果此部分小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生了梯度消失。weak_ptr 相对于 shared_ptr 来说,避免了两个对象相互使用一个 shared_ptr成员变量指向对方,造成循环引用,使引用计数失效,从而导致内存泄漏。1.weak_ptr 通常情况下需要跟 shared_ptr 一起使用。问题:深度学习梯度消失与梯度爆炸现象,如何处理?
2023-11-29 14:29:52
482
原创 工程师每日刷题 -2
关键:当元素 Ai,j 逆时针旋转后就有了 Ai,j = Aj,(n-i) 的关系。给出一个 n*n 矩阵,将其逆时针旋转 90 °,但是不能开辟新的内存空间。情况一:数据集大,提升模型大小泛化性没有提升。模型泛化性差,如何解决?
2023-11-28 11:03:58
479
原创 工程师每日刷题 -1
自注意力机制的缺陷就是:模型在对当前位置的信息进行编码时,会过度的将注意力集中于自身的位置, 因此作者提出了通过多头注意力机制来解决这一问题。多头注意力融合了来自于相同的注意力池化产生的不同的知识,这些知识的不同来源于相同的查询、键和值的不同的子空间表示。基于适当的张量操作,可以实现多头注意力的并行计算。
2023-11-27 16:16:20
526
原创 pytorch导出onnx不成功的时候如何解决? - 学习记录
可以看到,其实已经支持了,但还是导不出。所以这里要先注册一下这个算子。python1导不出onnx,可以去。• 使用onnx-surgeon。• 一般是用在加速某些算子上使用。查看一下,是否支持了这个算子。主要是这个函数,用来注册算子。
2023-10-28 00:41:32
1626
原创 CUDA编程 - 使用cuda进行矩阵乘法的加速方法 - 学习记录
🐖:CUDA有规定,一个block中可以分配的 thread 的数量最大是 1024 个线程。如果大于 1024 会显示配置错误。假设是 A(4x8) * B(8x4) = C(4x4)
2023-10-16 01:17:02
724
原创 Cuda与TensorRT 实践记录 - 专栏索引
Cuda与TensorRT 实践记录 - 专栏索引自己学习和实践的笔记,在这里做个记录,方便自己学习和检索。
2023-10-10 01:17:48
213
原创 面试问题记录
面试问题记录 1手撕NMS代码有用CUDA编程过么?如何减少模型的推理时间介绍卷积的底层实现方法语义分割有哪些损失函数?Anchor-free标签匹配方式U-Net为什么在扩散模型中有效?Transformer在图像中是怎么训练的?Transformer的计算复杂度,并如何降低?如果要在上万的图片中去搜索,怎么比较高效手撕NMS代码import numpy as npdef nms(dets,score): x1 = dets[:,0] y1 = dets[:,1] x2 =
2023-08-27 11:25:43
1656
原创 使用 Open3d-ML训练 Randlanet pytorch Semantic3d
在 git 上找了好多版 randlanet 的 torch 训练 semantic3d,发现训练的效果并不好,而且有些甚至连网络结构都不一样,最后终于找到一个训练效果不错 ,loss可以收敛的代码了,这里记录一下 使用训练 Randlanet 的 pytorch 版本 Semantic3d 的过程因为是 TF 用户,所以 顺便 学一下 torch 的代码。
2023-05-08 11:13:15
1302
5
原创 PointNet++ pytorch 代码论文阅读整理
set abstraction 由 sampling,grouping,pointnet 三个模块构成。
2023-05-04 18:17:59
284
1
原创 Windows环境 Tensorflow-2.6.0 编译 C++ GPU Lib DLL (bazel)(后面会提供编译好的库)
Windows环境 Tensorflow-2.6.0 编译 C++ GPU Lib DLL (bazel)(后面会提供编译好的库)
2023-02-27 17:07:52
1608
2
原创 Randlanet ubuntu+30显卡 + TF2环境 训练Semantic3D
Randlanet 30显卡 ubuntu 训练 semantic3D
2023-02-27 13:57:28
2076
40
原创 Ubuntu20.04.3&& PCL1.12+VTK7.1.1&&多版本PCL安装
ubuntu20.04&pcl1.12-vtk7.1.1&多版本pcl安装
2022-08-11 12:38:38
3040
5
sample-cbr.onnx
2024-03-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅