PyTorch AMP Mechanism
Automatic mixed precision(AMP) 自动混合精度训练与推理,自动决定哪些算子以float16运行,哪些以float32运行,从而在降低内存以及带宽,提高计算性能的同时,减少精度损失。
背景硬件Nvidia 在 Volta 架构中首次引入 Tensor Core 单元,来支持 FP32 和 FP16 混合精度计算
FMA: Fused Multiply-Add 的操作,通俗一点就是一个加乘操作的融合
Cuda Core:Cuda Core是全能通用型的浮点运算单元,单GPU时钟周期完成一次FMA操作。
Tensor Core:Tensor Core是专为执行深度学习矩阵运算而设计的专用执行单元,单GPU时钟周期完成一次矩阵相乘(以 4 * 4矩阵为例,单GPU时钟周期可以完成64次 FMA)
每一代Tensor Core支持的计算类型如下:
模型Transform模型以及传统CNN模型等充斥着大量矩阵乘加运算
前世今生Nvidia apex项目为了释放Tensor Core的巨大性能,Nvidia 于 2018 年提出一个 PyTorch 拓展 ap ...
PyTorch Tensor Mechanism
The Components of PyTorch
Module
Detail
Description
Tensor/Storage
视图/
nn
initfunctional
网络
optimizers
SGDAdagradRMSpropAdam
优化器
autograd
自动微分
distributed
model paralleldata parallel
分布式
dispatcher
分发器
compiler
jit.tracejit.scriptfxTorchDynamo
静态图
onnx
onnx模型转换
hub
预训练模型
tensorboard
可视化
Directory Structure
torch:import torch 所涉及的 python 代码
csrc:C++源码,pyind11 && python c api相关
csrc/autograd:梯度自动计算系统的C++实现
autograd:梯度自动计算系统的Python前端源码
nn:建立在aut ...
PyTorch Operator Register
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124class TorchLibraryInit final {private: using InitFn = void(Library&); Library lib_;public: TorchLibraryInit( Library::Kind kind, InitFn* fn, const char* ns, c10::optional<c10::DispatchKey> k, c ...
PyTorch Dispatcher Mechansim
DispatchKey1234567891011121314151617181920212223242526272829303132333435363738394041424344DispatchKey: uint16_t (total 132)1) Functionality Key(46) a) non-customizable functionalities: BackendSelect Python ADInplaceOrView VmapMode ... // TODO: make Autocast a functionality key AutocastCPU AutocastXPU AutocastIPU AutocastHPU AutocastXLA AutocastCUDA AutocastPrivateUse1 ... b) customizable per backend(5) ...
How to Debug Linux Kernel
编译内核
下载kernel代码,切换至目标tag
12git clone git@github.com:FFFrog/linux.gitgit checkout v5.10
开启内核参数
1make menuconfig
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748Kernel hacking ---> -*- Kernel debugging Compile-time checks and compiler options ---> [*] Compile the kernel with debug info [*] Provide GDB scripts for kernel debuggingDevice Drivers ---> Generic Driver Options ---> [*] Support for uevent helperDev ...