- 博客(14)
- 收藏
- 关注
原创 【VLA】c/c++中vla是用什么实现的栈空间内存申请
VLA(Variable Length Array)是c99开始支持的,后续版本一直作为扩展功能支持。官方给出的建议是:如果可以替换使用,请不要使用。370 便是用于栈空间内存申请的处理,alloca指令的主要功能为:alloca。此外,@llvm.stacksave() 和 @llvm.stackrestore(ptr %9)便是栈上用来保存和读取对应指针的处理动作。通过clang进行编译,dump出llvm ir的信息: clang -S -emit-llvm -o 目标文件 源文件。
2024-01-30 09:30:35
811
2
原创 Pytorch中cuda kernel进行离散访存的几个基本函数
Pytorch原生CUDA C的大部分kernel都支持离散数据访存,其主要的逻辑都是通过thread id去匹配到输入输出Tensor的内存索引。熟悉Pytorch的同学都知道,Tensor的内存索引在pytorch中是通过size,stride和offset来表示的。基本的规则便是:假设一个Tensor a 的size为(2, 4, 4),stride为(16, 4, 1)对其进行slice操作后,Tensor b的size为(2, 4, 2),stride为(16, 4, 2)那么对应点。
2023-07-31 21:43:03
301
1
原创 基于pytorch1.9原生解释,重点介绍native_functions.yaml中关键参数
CompositeExplicitAutograd: 表示这个kernel使用于所有的算子,但是需要在derivatives.yaml文件中显示地声明反向函数。这类算子典型的应用场景是通过stub将复杂的任务分发给单独的kernel,而本身只进行简单的工作。CompositeImplicitAutograd: 表示这个kernel使用于所有的算子,且天然支持反向处理。1.9分支已经没有使用。method的定义表示: self.for(), function的定义表示: at::for()
2023-04-07 22:17:58
1099
原创 pytorch nested tensor基本介绍
1.3) 通过创建一块连续的大buffer,将各个Tensor内存拷贝到buffer tensor, 通过nested_sizes_, nested_strides_, nested_offsets_进行信息记录,也是根据这几个信息,判断各个Tensor和buffer的连续性;调用: torch._nested_tensor_from_tensor_list(tensor_list, dtype, None, device, None)2.3.3)传入的不可以是nestedTensor。
2023-04-04 19:44:31
1511
原创 pytorch基于intrusive_ptr_target实现的核心数据结构介绍
基于pytorch中intrusive_ptr_target的实现,大体介绍StorageImpl和TensorImpl类的实现。
2023-03-05 17:09:23
506
原创 std::add_const
官方说明中核心语句: 如果本身就是const类型或者引用类型或者函数类型,则保持不变; 其他场景变成T const官方说明:add_const - C++ Reference#include <iostream>#include <type_traits>#include <functional>using forward_func = std::function<int(int)>;typedef int(func_point_typ.
2022-04-19 15:21:20
1364
原创 TF32和AMP训练为何可以保证训练精度收敛
目标自NV的Ampere架构后,越来越多的AI研究者使用TF32或者AMP(混合精度)进行网络训练。在网络训练精度的同时,也极大的提升了训练速度。(其中更多的应用者选择TF32)相对于原先深度学习领域使用FLOAT32进行训练,明明训练中降低了数据表示精度,为什么还能取得满意的训练和推理结果呢?本文主要基于这个基本问题展开讨论。下面先简单看一下A100支持的浮点运算单元和其对应算力。基本数据类型介绍:各数据类型算力介绍:问题解答如果想要解答上面这个问题,最主要还是要探
2022-04-15 03:54:33
2944
原创 【unordered_set初始化】unordered_set自定义hash函数和compare函数的初始化方法
#include <iostream>#include <unordered_set>#include <string>namespace uset {typedef struct PeopleInfo { std::string name; int age;} PInfo, *PInfo_ptr;typedef bool(*info_com)(const PInfo&, const PInfo&);// std::functi.
2022-04-01 03:38:28
1027
原创 pytorch1.9.0 IValue类分析
IValue(InterpreterValue)IValue(InterpreterValue)是一种boxing的数据类型,其中主要包含的成员变量为Payload,Tag和一个是否为指针的bool变量。其中Payload为Union类,真实的数据存储,Tag为一个枚举类。代码位置:https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/core/ivalue.hIValue中通过Tag完成对应数据类型判断,从而便于完成Pay..
2022-03-21 14:37:10
1469
原创 Vision transforme基本结构介绍
论文原文:https://arxiv.org/pdf/2010.11929.pdf中文版知乎解读:[论文笔记] ViT - 知乎网络基本思想:通过transformer完成nlp和cv类网络结构的统一。 NLP网络输入序列,通过Encoder和Decoder完成对于序列信息的编码和解码。CV网络中基础为图片(假设图片大小为224×224×3),通过卷积和MLP完成图片信息的抽取和分类(假设为分类网络)。 将Transformer应用与图片上,主要就是替换掉原有的卷积层(更确切地说是通过a...
2022-03-14 19:52:42
5189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人