GPU
文章平均质量分 90
Adenialzz
Keep Learning.
展开
-
Pytorch导出onnx模型,C++转化为TensorRT并实现推理过程
Pytorch导出onnx模型,C++转化为TensorRT并实现推理过程原创 2022-06-26 17:55:38 · 6927 阅读 · 20 评论 -
C++多线程推理、生产者消费者模式封装
C++多线程推理、生产者消费者模式封装原创 2022-06-18 21:10:04 · 2157 阅读 · 3 评论 -
[深度][PyTorch] DDP系列第三篇:实战与技巧
[深度][PyTorch] DDP系列第三篇:实战与技巧转自:https://zhuanlan.zhihu.com/p/250471767零. 概览想要让你的PyTorch神经网络在多卡环境上跑得又快又好?那你definitely需要这一篇!No one knows DDP better than I do!– – magic_frog(手动狗头)本文是DDP系列三篇(基本原理与入门,实现原理与源代码解析,实战)中的第三篇。本系列力求深入浅出,简单易懂,猴子都能看得懂(误)。在过去的转载 2022-05-30 16:38:53 · 965 阅读 · 0 评论 -
[深度][PyTorch] DDP系列第二篇:实现原理与源代码解析
[深度][PyTorch] DDP系列第二篇:实现原理与源代码解析转自:https://zhuanlan.zhihu.com/p/187610959概览想要让你的PyTorch神经网络在多卡环境上跑得又快又好?那你definitely需要这一篇!No one knows DDP better than I do!– – MagicFrog(手动狗头)本文是DDP系列三篇(基本原理与入门,实现原理与源代码解析,实战与技巧)中的第二篇。本系列力求深入浅出,简单易懂,猴子都能看得懂(误)。本转载 2022-05-30 16:18:09 · 1950 阅读 · 0 评论 -
[深度][PyTorch] DDP系列第一篇:入门教程
https://zhuanlan.zhihu.com/p/178402798转载 2022-05-30 15:17:00 · 2021 阅读 · 0 评论 -
TensorRT ONNX 基础(续)
TensorRT ONNX 基础(续)PyTorch正确导出ONNX几条推荐的原则,可以减少潜在的错误:对于任何使用到 shape、size 返回值的参数时,例如 tensor.view(tensor.size(0), -1) 这类操作,避免直接使用 tensor.size() 的返回值,而是用 int 强转以下,断开跟踪,即:tensor.view(int(tensor.view(0)), -1) 。对于 nn.Unsample 、nn.functional.interpolate 函数,使用原创 2022-05-03 22:28:07 · 1294 阅读 · 0 评论 -
TensorRT ONNX 基础
TensorRT ONNX 基础概述TensorRT 的核心在于对模型算子的优化(合并算子、利用当前 GPU 特性选择特定的核函数等多种策略),通过 TensorRT,能够在 Nvidia 系列 GPU 上获得最好的性能。TensorRT 模型需要在目标 GPU 上以实际运行的方式选择最优的算法和配置(不同的 GPU 的许多特性的不一样,在特定 GPU 上跑一跑,再知道怎样最快)。也因此 TensorRT 得到的模型只能在特定的环境下运行(编译时的 TensorRT 版本、CUDA 版本、GPU原创 2022-05-01 20:06:33 · 3862 阅读 · 0 评论 -
精简CUDA教程——CUDA Runtime API
精简CUDA教程——CUDA Runtime APIRuntime API 概述环境图中可以看到,Runtime API 是基于 Driver API 之上开发的一套 API。之前提到过 Driver API 基本都是 cu 开头的,而Runtime API 基本都是以 cuda 开头的。Runtime API 的特点Runtime API 与 Driver API 最大的区别是懒加载 ,即在真正执行功能时才自动完成对应的动作,即:第一个 Runtime API 调用时,会自动进行原创 2022-04-29 17:11:10 · 6293 阅读 · 0 评论 -
CUDA编程入门极简教程
CUDA编程入门极简教程转自:CUDA编程入门极简教程作者:小小将前言2006年,NVIDIA公司发布了CUDA,CUDA是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题。近年来,GPU最成功的一个应用就是深度学习领域,基于GPU的并行计算已经成为训练深度学习模型的标配。目前,最新的CUDA版本为CUDA 9。GPU并不是一个独立运行的计算平台,而需要与CPU协同工作,可以看成是CPU的协处理器,转载 2022-04-27 12:25:58 · 15907 阅读 · 2 评论 -
精简CUDA教程——CUDA Driver API
精简CUDA教程——CUDA Driver APIDriver APIDriver API概述CUDA 的多级 APICUDA 的 API 有多级(下图),详细可参考:CUDA环境详解。CUDA Driver API 是 CUDA 与 GPU 沟通的驱动级底层 API。早期 CUDA 与 GPU 沟通都是直接通过 Driver API。cuCtxCreate() 等 cu 开头的基本都是 Driver API。我们熟悉的 nvidia-smi 命令就是调用的 Driver API。后来发觉 D原创 2022-04-23 00:13:16 · 2621 阅读 · 0 评论 -
混合精度训练
混合精度训练转自:https://zhuanlan.zhihu.com/p/441591808通常我们训练神经网络模型的时候默认使用的数据类型为单精度FP32。近年来,为了加快训练时间、减少网络训练时候所占用的内存,并且保存训练出来的模型精度持平的条件下,业界提出越来越多的混合精度训练的方法。这里的混合精度训练是指在训练的过程中,同时使用单精度(FP32)和半精度(FP16)。1 浮点数据类型根据IEEE二进制浮点数算术标准(IEEE 754)的定义,浮点数据类型分为双精度(Fp64)、单精度(Fp转载 2022-04-07 09:36:22 · 1600 阅读 · 0 评论 -
CUDA环境详解
CUDA环境详解本文主要介绍 CUDA 环境,这一堆东西网上有很多博客介绍过了,我再来一篇:),参考前辈们的文章,看能不能写的更清楚一点。读后仍有问题,欢迎留言交流。CUDA APIsCUDA是由NVIDIA推出的通用并行计算架构,通过一些CUDA库提供了一系列API供应用程序调用。开发者可调用这些API充分利用GPU来处理图像,视频解码等。CUDA 的 API 其实是可以分层次来理解的,这也造成了有时会出现 nvcc -V 显示的 CUDA 版本和 nvidia-smi 显示的 CUDA 版本不一原创 2022-03-27 16:30:57 · 8256 阅读 · 0 评论 -
docker gpu报错Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]
Docker容器中使用Nvidia GPU报错 docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]].问题出现我们知道,想要在 docker19 及之后的版本中使用 nvidia gpu 已经不需要单独安装 nvidia-docker 了,这已经被集成到了 docker 中。相必大家也知道,要使用宿主机的 GPU,需要在 docker run 的时候添加 --gp原创 2022-03-26 18:14:18 · 28406 阅读 · 19 评论 -
Nvidia CUDA初级教程7 CUDA编程二
Nvidia CUDA初级教程7 CUDA编程二视频:https://www.bilibili.com/video/BV1kx411m7Fk?p=8讲师:周斌本节内容:内置类型和函数 Built-ins and functions线程同步 Synchronizing线程调度 Scheduling threads存储模型 Memory model重访 Matrix multiply原子函数 Atomic functions函数的声明执行调用__global_原创 2022-01-29 17:47:58 · 946 阅读 · 0 评论 -
手写nms
手写nms计算宽高的时候加1是为什么?本文总结自互联网的多种nms实现,供参考,非博主原创,各原文链接如下,也建议大家动手写一写。Ref:浅谈NMS的多种实现目标窗口检测算法-NMS非极大值抑制一、faster-rcnn源码阅读:nms的CUDA编程c++版 nmsnms简介首先还是要科普一下nms算法的思想:简单来说就是去重框。这里的重框针对的当然是某一类的框。下面实现的时候也是默认拿到某一类所有的框。算法思路:For a prediction bounding box B, th转载 2022-01-27 16:56:47 · 865 阅读 · 1 评论 -
Nvidia CUDA初级教程6 CUDA编程一
Nvidia CUDA初级教程6 CUDA编程一视频:https://www.bilibili.com/video/BV1kx411m7Fk?p=7讲师:周斌GPU架构概览GPU特别使用于:密集计算,高度可并行计算图形学晶体管主要被用于:执行计算而不是缓存数据控制指令流图中分别是CPU、GPU各个部件所占的芯片面积。可以看到,CPU芯片中大量部分是缓存和控制逻辑,而GPU中则绝大部分都是计算单元。CUDA编程相关简介CUDA的一些信息层次化线程集合原创 2022-01-24 21:18:18 · 809 阅读 · 1 评论 -
Nvidia CUDA初级教程5 CUDA/GPU编程模型
Nvidia CUDA初级教程5 CUDA/GPU编程模型视频:https://www.bilibili.com/video/BV1kx411m7Fk?p=6讲师:周斌本节内容:CPU和GPU互动模式GPU线程组织模型(需要不停强化)GPU存储模型基本的编程问题CPU与GPU交互各自的物理内存空间通过PCIE总线互连交互开销较大GPU的存储器层次架构(硬件)下图是OpenCL的图GPU存储层次访存速度RegistersDedicated原创 2022-01-23 23:25:30 · 621 阅读 · 0 评论 -
Nvidia CUDA初级教程4 GPU体系架构概述
Nvidia CUDA初级教程4 GPU体系架构概述视频:https://www.bilibili.com/video/BV1kx411m7Fk?p=5讲师:周斌本节内容:为什么需要GPU三种方法提升GPU的处理速度实际GPU的设计举例:NVDIA GTX 480: FermiNVDIA GTX 680: KeplerGPU存储器设计名词解释FLOPS - Floating-point OPerations per SecondGFLOPS - One billion原创 2022-01-23 19:40:27 · 755 阅读 · 0 评论 -
Nvidia CUDA初级教程2 并行程序设计概述
Nvidia CUDA初级教程2 并行程序设计概述视频:https://www.bilibili.com/video/BV1kx411m7Fk?p=3讲师:周斌本节内容:为什么需要?怎么做?一些技术和概念串并行计算模式串行计算模式常规软件时串行的设计运行于一个中央处理器(CPU)上通过离散的指令序列完成一个问题的解决一条一条指令地执行同时只有一条指令在执行逻辑上定义的串行计算是这样,实际上前面我们也介绍过,在CPU中也有很多的指令级并行优化。并行计算模式并原创 2022-01-22 23:01:04 · 244 阅读 · 0 评论 -
Nvidia CUDA初级教程1 CPU体系架构综述
Nvidia CUDA初级教程1 CPU体系架构综述视频:https://www.bilibili.com/video/BV1kx411m7Fk?p=2讲师:周斌本节课程:了解现代CPU的架构和性能优化:流水线 Pipelining分支预测 Branch Prediction超标量 Superscalar乱序执行 Out-of-Order (OoO) Excution存储器层次 Memeory Hierarchy矢量操作 Vertor Operations多核处理 Multi-Co原创 2022-01-22 20:21:35 · 2142 阅读 · 0 评论 -
nvidia-smi 命令详解
nvidia-smi 命令详解简介nvidia-smi - NVIDIA System Management Interface programnvidia smi(也称为NVSMI)为来自 Fermi 和更高体系结构系列的 nvidia Tesla、Quadro、GRID 和 GeForce 设备提供监控和管理功能。GeForce Titan系列设备支持大多数功能,为GeForce品牌的其余部分提供的信息非常有限。NVSMI是一种跨平台工具,支持所有标准NVIDIA驱动程序支持的Linux发行版,以原创 2021-11-09 15:09:13 · 30360 阅读 · 2 评论 -
使用Apex进行混合精度训练
使用Apex进行混合精度训练转自:https://fyubang.com/2019/08/26/fp16/你想获得双倍训练速度的快感吗?你想让你的显存空间瞬间翻倍吗?如果我告诉你只需要三行代码即可实现,你信不?在这篇博客里,瓦砾会详解一下混合精度计算(Mixed Precision),并介绍一款Nvidia开发的基于PyTorch的混合精度训练加速神器—Apex,最近Apex更新了API,可以用短短三行代码就能实现不同程度的混合精度加速,训练时间直接缩小一半。话不多说,直接先教你怎么用。PyT转载 2021-10-28 15:51:47 · 2349 阅读 · 0 评论 -
[分布式训练] 单机多卡的正确打开方式:Horovod
[分布式训练] 单机多卡的正确打开方式:Horovod转自:https://fyubang.com/2019/07/26/distributed-training4/讲完了单机多卡的分布式训练的理论、TensorFlow和PyTorch分别的实现后,今天瓦砾讲一个强大的第三方插件:Horovod。Horovod是Uber开源的跨平台的分布式训练工具,名字来自于俄国传统民间舞蹈,舞者手牵手围成一个圈跳舞,与Horovod设备之间的通信模式很像,有以下几个特点:兼容TensorFlow、Keras和P转载 2021-10-28 15:32:55 · 761 阅读 · 0 评论 -
[分布式训练] 单机多卡的正确打开方式:PyTorch
[分布式训练] 单机多卡的正确打开方式:PyTorch转自:https://fyubang.com/2019/07/23/distributed-training3/PyTorch的数据并行相对于TensorFlow而言,要简单的多,主要分成两个API:DataParallel(DP):Parameter Server模式,一张卡位reducer,实现也超级简单,一行代码。DistributedDataParallel(DDP):All-Reduce模式,本意是用来分布式训练,但是也可用于单机多卡转载 2021-10-28 15:22:37 · 412 阅读 · 0 评论 -
Linux下的CUDA多版本管理
Linux下的CUDA多版本管理关于CUDA、cuDNN等的简介和安装可参考:显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理。CUDA多版本有时我们会在一台机器上同时看到多个版本的CUDA,比如nvcc -V和nvidia-smi的输出就可能会不同:在我们实验室的服务器上nvcc --version显示的结果如下:nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2018 NVIDIA CorporationB原创 2021-10-17 23:10:19 · 2036 阅读 · 0 评论 -
[分布式训练] 单机多卡的正确打开方式:理论基础
[分布式训练] 单机多卡的正确打开方式:理论基础转自:https://fyubang.com/2019/07/08/distributed-training/瓦砾由于最近bert-large用的比较多,踩了很多分布式训练的坑,加上在TensorFlow和PyTorch之间更换,算是熟悉了一下各类框架的分布式训练接口,由于集中在一起讲可能比较乱,笔者准备分三到四篇来讲一下深度学习的分布式训练。这一篇先讲一下“分布式训练的类型与算法”。分布式训练的需求和重要性不需要多说,随着GPT、BERT、xlnet这转载 2021-09-12 11:38:56 · 995 阅读 · 0 评论 -
NVIDIA英伟达的Multi-GPU多卡通信框架NCCL
NVIDIA的英伟达Multi-GPU多卡通信框架NCCL转自:https://www.zhihu.com/question/63219175/answer/206697974NCCL是Nvidia Collective multi-GPU Communication Library的简称,它是一个实现多GPU的collective communication通信(all-gather, reduce, broadcast)库,Nvidia做了很多优化,以在PCIe、Nvlink、InfiniBand上转载 2021-09-07 14:43:48 · 2468 阅读 · 0 评论 -
科普 | 单精度、双精度、多精度和混合精度计算的区别是什么?
科普 | 单精度、双精度、多精度和混合精度计算的区别是什么?转自:https://zhuanlan.zhihu.com/p/93812784我们提到圆周率 π 的时候,它有很多种表达方式,既可以用数学常数3.14159表示,也可以用一长串1和0的二进制长串表示。圆周率 π 是个无理数,既小数位无限且不循环。因此,在使用圆周率进行计算时,人和计算机都必须根据精度需要将小数点后的数字四舍五入。在小学的时候,小学生们可能只会用手算的方式计算数学题目,圆周率的数值也只能计算到小数点后两位——3.14;而高中转载 2021-09-05 14:06:37 · 6739 阅读 · 0 评论 -
FLOPs、FLOPS、Params的含义及PyTorch中的计算方法
FLOPs、FLOPS、Params的含义及PyTorch中的计算方法含义解释FLOPS:注意全大写,是floating point operations per second的缩写(S表second秒),表示每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。FLOPs:注意s小写,是floating point operations的缩写(s表复数),表示浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。Params:没有固定的名称,大小写均可,表示模型的参数量,也是用来衡量算法原创 2021-09-04 19:41:03 · 22991 阅读 · 3 评论 -
显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理
显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理转自:https://www.cnblogs.com/marsggbo/p/11838823.html#nvccnvidia-smiGPU型号含义显卡: 简单理解这个就是我们前面说的GPU,尤其指NVIDIA公司生产的GPU系列,因为后面介绍的cuda,cudnn都是NVIDIA公司针对自身的GPU独家设计的。显卡驱动:很明显就是字面意思,通常指NVIDIA Driver,其实它就是一个驱动软件,而前面的显卡就是硬件。gpu架构转载 2021-08-13 21:41:01 · 1545 阅读 · 0 评论