
GPU
文章平均质量分 92
图波列夫
这个作者很懒,什么都没留下…
展开
-
CUDA C++ Programming Guide 7.26. Asynchronous Barrier
NVIDIA C++ 标准库引入了 std::barrier 的 GPU 实现。除了std::barrier的实现之外,该库还提供了扩展功能,允许用户指定屏障对象的作用范围。屏障 API 的作用范围在 Thread Scopes 中有详细说明。 计算能力为8.0或更高的设备为屏障操作提供了硬件加速,并将其与memcpy_async 功能集成。 在计算能力低于8.0但不低于7.0的设备上,这些屏障可以使用但没有硬件加速。翻译 2024-09-11 09:30:16 · 527 阅读 · 0 评论 -
onnxruntime 中的 Gather 算子
上一篇文章中介绍了 Division by Invariant Integers using Multiplication 的原理,很多框架均才用该算法优化除法运算。onnxruntime 是已知实现中最为简洁的,因此本文结合 onnxruntime 的 Gather 实现进行介绍。 Gather 算子是一个索引类算子,kernel 中每个线程计算偏移时使用 fast_divmod 避免除法运算。 注意:ONNX 中的 Gather 功能与 numpy.take 相同原创 2024-03-27 19:06:20 · 2790 阅读 · 2 评论 -
Division by Invariant Integers using Multiplication
表 1.1 比较了一些处理器上乘法和除法的时间。这张表展示了乘法和除法时间差距的增长趋势。因此,中提出了使用整数乘法进行任意非零整数常数和运行时不变量之间除法的算法。文档中记录了更广泛的处理指令性能,其中 Intel IceLake 处理器的乘除法指令延迟和吞吐倒数如下表所示:可以看出,在现代 CPU 处理器上除法开销大的情况并未发生改变。NVIDIA 和 AMD GPU 均不支持整数除法指令,CUDA C++ Programming Guide。原创 2024-03-19 20:00:37 · 950 阅读 · 0 评论 -
CUTLASS 1.3.3中的 Volta884_h884gemm
CUTLASS 是 CUDA C++ 模板抽象的集合,用于在 CUDA 内的所有级别和规模上实现高性能矩阵-矩阵乘法 (GEMM) 和相关计算。它采用了类似于 cuBLAS 和 cuDNN 中实现的分层分解和数据移动策略。CUTLASS 最新版本为3.3,相比1.3.3变动较大。然而重温一下1.3.3仍然是有意义的。因为它更易于理解: 与 PROGRAMMING TENSOR CORES: NATIVE VOLTA TENSOR CORES WITH CUTLASS 中介绍的内容相匹配;原创 2023-11-22 19:45:13 · 539 阅读 · 0 评论 -
Programming Tensor Cores: NATIVE VOLTA TENSOR CORES WITH CUTLASS
PROGRAMMING TENSOR CORES: NATIVE VOLTA TENSOR CORES WITH CUTLASS 源自于 GTC Silicon Valley-2019: cuTENSOR: High-performance Tensor Operations in CUDA,介绍了 CUTLASS 1.3 中基于 Volta Tensor Core 实现高效矩阵乘法计算的策略。主要内容为以下三点: CUDA 10.1中mma.sync指令介绍; Global Memory原创 2023-11-22 17:18:50 · 750 阅读 · 0 评论 -
Modeling Deep Learning Accelerator Enabled GPUs
Modeling Deep Learning Accelerator Enabled GPUs 发表在 ISPASS 2019 上。文章研究了 NVIDIA 的 Volta 和 Turing 架构中张量核的设计,并提出了 Volta 中张量核的架构模型。基于实现该模型,并且支持 CUTLASS 运行。发现其性能与硬件非常吻合,与 Titan V GPU 相比,获得了99.6%的 IPC 相关性。文中还展示了 Turing 架构中张量核的操作数矩阵元素到线程的映射,并发现它们与 Volta 张量核的行为不同。原创 2023-10-23 17:54:42 · 1181 阅读 · 0 评论 -
CUTLASS: Implicit GEMM Convolution
Implicit GEMM 是将卷积操作表述为 GEMM (广义矩阵-矩阵积)。卷积接受激活张量并对其应用滑动滤波器以产生输出张量。二维卷积可以映射到矩阵乘:组建一个包含激活张量元素的卷积矩阵,然后由滤波张量形成的矩阵乘以该矩阵。该算法的最早形式通过通常称为 im2col 的操作显式构造卷积矩阵。生成的矩阵按照滤波器大小复制每个激活元素,消耗额外的存储容量和内存带宽。隐式 GEMM 算法是 CUDA 中分块、分层 GEMM 计算的一种变体:当数据从全局内存加载到共享内存时,通过周密地更新指针和谓词,它翻译 2023-08-15 19:21:06 · 3810 阅读 · 0 评论 -
OneFlow 中的 Softmax
Softmax 是深度学习模型中的常见算子。PyTorch 的 Softmax 算子直接调用 cuDNN 的接口。而 OneFlow 内部针对输入数据的类别数量,采用3个 kernel 来分别处理,在多数情况下都可以获得比 cuDNN 更优的性能表现。下面对其实现进行介绍。OneFlow 的静态分层结构如下图所示:原创 2023-08-10 19:18:13 · 654 阅读 · 0 评论 -
cuDNN 的初始设计
cuDNN V1.0在2014年的发布,并集成到 Caffe、Paddle 等深度学习框架中。论文介绍了 NVIDIA 对于该库的设计和实现。近十年间,NVIDIA 迭代推出了8代架构,cuDNN 也更新到 8.9。硬件上引入了 Tensor Core,软件方面 cuDNN V8 中的 Graph API 相比之前变化较大。然而,作为深度学习领域影响广泛的软件基础设施,一窥 cuDNN 的初始设计仍是有意义的。cuDNN 类似于 cuBLAS,提供了深度学习原语的高效实现。原创 2023-04-22 20:07:02 · 1297 阅读 · 0 评论 -
TensorFlow 中的 Conv2DOp
TensorFlow 中的2D 卷积主要依赖外部库,如 cuDNN、cuBLAS、ROCm 和 hfp/libxsmm,仅 DeepConv2D 为源码实现。Conv2DOpBinaryOpInitConv2DParameters 从 OpKernelConstruction 中读取设置到 Conv2DParameters 并进行检查。CudnnUseAutotune 标识是否开启自动调优。......原创 2022-08-03 10:35:49 · 985 阅读 · 0 评论 -
RetinaNet Examples:NVIDIA 一站式训练、推理及模型转换解决方案
retinanet-examples 是英伟达提供的目标检测工程范例,针对端到端 GPU 处理进行了优化:使用基于 Python 多进程的 apex.parallel.DistributedDataParallel 加速分布式训练;apex.amp 优化混合精度训练;NVIDIA DALI 加速数据预处理;推理使用 TensorRT。项目推荐安装 PyTorch NGC docker...原创 2019-08-08 19:24:25 · 2447 阅读 · 11 评论 -
DeepStream: 新一代智能城市视频分析
以下主体内容翻译自DeepStream: Next-Generation Video Analytics for Smart Cities试想一下每个家长最糟糕的噩梦:一个孩子在拥挤的商场里迷路。现在想象一下,建筑物内部署的摄像机网络在几分钟之内就可以找到这个孩子的位置,并实时记录、检索和分析所有的视频。这只是视频分析领域提供的许多可能性之一。 虽然传统的视频分析使用基于计算机视觉的方法原创 2018-01-25 21:05:20 · 16546 阅读 · 0 评论 -
Training Deep Nets with Sublinear Memory Cost 笔记
《Training Deep Nets with Sublinear Memory Cost》笔记摘要我们提出了一种减少深度神经网络训练时内存消耗的系统性方法。具体来说,我们设计了一个算法,训练一个 nnn 层网络仅耗费 O(n−−√)O(n)O(\sqrt{n}) 的内存,每个mini-batch只需要一个额外的前向计算成本。由于许多最先进的模型已经达到了GPU显存的上限,我们的...原创 2018-03-08 10:49:03 · 5565 阅读 · 2 评论 -
DeepStream User Guide
目录布局DeepStream SDK包含两个主要部分:库和工作流演示示例。已安装的DeepStream软件包包括目录/lib,/include,/doc和/samples。动态库libdeepstream.so位于/lib目录中有两个头文件:deepStream.h和module.h deepStream.h包括解码输出的定义、支持的数据类型、推断参数、分析器类和DeepStream...翻译 2018-03-01 19:19:10 · 6343 阅读 · 2 评论 -
使用TVM优化深度学习GPU算子:深度卷积实例
以下内容翻译自:Optimize Deep Learning GPU Operators with TVM: A Depthwise Convolution Example高效的深度学习算子是深度学习系统的核心。通常这些算子很难优化,并且需要高性能计算专家的努力。TVM,端到端张量IR/DSL堆栈,使得这项任务更容易。这个博客教你如何在TVM的帮助下编写高性能GPU运算核心。我们使用深度卷...翻译 2018-03-01 20:01:00 · 11525 阅读 · 6 评论 -
Caffe2移动端GPU支持列表
Caffe2移动端GPU支持列表移动端是Caffe2是发力的方向之一。Caffe2支持通过OpenGL调用移动GPU。然而移动端GPU却无法保持桌面上对CPU的优势,多CPU核心配弱GPU更是安卓界的一大特色。即使强大如iPhone,对于iPhone 6s以下的设备,NNPACK加速的CPU实现也比Apple的MPSCNNConvolution性能好。AndroidAndroid支持设备列表:#if原创 2017-10-31 17:37:05 · 2323 阅读 · 0 评论 -
Diagonalwise Refactorization: An Efficient Training Method for Depthwise Convolutions笔记
Diagonalwise Refactorization: An Efficient Training Method for Depthwise Convolutions论文地址:Diagonalwise Refactorization: An Efficient Training Method for Depthwise Convolutions摘要Depthwise Conv由...原创 2018-05-31 15:22:21 · 1101 阅读 · 0 评论 -
MegDet 与 Synchronized BatchNorm
深度学习时代的目标检测发展——从 R-CNN、Fast/Faster R-CNN 到最近的 MaskR-CNN 和 RetinaNet,主要来自新网络、新结构或损失设计。然而,作为深度神经网络训练的一个关键因素,mini-batch 的大小在目标检测方面还没有很好地进行研究。本文提出了一种大 mini-batch 目标检测器(MegDet),可以实现最大 mini-batch 为256的训练,从而...原创 2018-07-01 19:57:30 · 8114 阅读 · 0 评论 -
NVCaffe P2PManager
Caffe多GPU训练主要涉及4个类:P2PManager、P2PSync、Solver Net。 假设使用4个GPU进行训练,模块依赖图如下图所示: 值得注意的是,每个Solver会创建线程运行Solver::Reduce。而Solver::Reduce会借由Net::ReduceAndUpdate调用Net::Reduce和Solver::ApplyUpdate。这意味着Net::Fo...原创 2018-07-27 09:25:56 · 978 阅读 · 2 评论 -
NVIDIA Tesla/Quadro和GeForce GPU比较
Comparison of NVIDIA Tesla/Quadro and NVIDIA GeForce GPUs 英伟达gtx不仅可以用来玩游戏,就深度学习任务而言,gtx具备的算力并不亚于tesla专业显卡。并且,游戏卡的价格相比专业卡要便宜不少。那么二者之间的差异是什么呢? 首先,gtx的单卡计算性能和tesla差别不大。虽然英伟达大幅削减了gtx的FP16性能,使其聊胜于无。但gt原创 2017-11-14 17:25:47 · 14548 阅读 · 0 评论