首页 > 系统相关 >从GPU的内存访问视角对比NHWC和NCHW

从GPU的内存访问视角对比NHWC和NCHW

时间:2023-10-07 09:33:22浏览次数:69  
标签:卷积 NCHW 矩阵 变换 NHWC 内存 GPU

NHWC和NCHW是卷积神经网络(cnn)中广泛使用的数据格式。它们决定了多维数据,如图像、点云或特征图如何存储在内存中。

  • NHWC(样本数,高度,宽度,通道):这种格式存储数据通道在最后,是TensorFlow的默认格式。
  • NCHW(样本数,通道,高度,宽度):通道位于高度和宽度尺寸之前,经常与PyTorch一起使用。

NHWC和NCHW之间的选择会影响内存访问、计算效率吗?本文将从模型性能和硬件利用率来尝试说明这个问题。

卷积作为GEMM

GEneral Matrix to Matrix Multiplication (通用矩阵的矩阵乘法)

卷积可以使用基于变换的方法来实现,如快速傅立叶变换,它将卷积转换为频域的元素乘法,或者使用无变换的方法,如矩阵乘法,其中输入和滤波器(卷积核)被平面化并使用矩阵操作组合以计算输出特征映射。

但是:fft是内存密集型的,因为它们需要额外的内存来存储转换后的矩阵。并且fft的计算成本很高,特别是在时域和频域之间来回转换数据时,涉及操作开销。

而卷积运算的一般矩阵乘法是这样的。每个接受域按列堆叠,得到特征映射变换矩阵。同时还将滤波器矩阵逐行平摊和叠加,形成滤波器变换矩阵。滤波变换和特征映射变换矩阵经过矩阵乘法运算,形成扁平化的输出矩阵。这里的变换矩阵是一个中间矩阵,只是数值重排,与频域变换没有关系。

N -特征图的批量大小,C -输入通道,h -输入高度,W -输入宽度,

k -输出通道,r -滤波器高度,s -滤波器宽度,p -输出高度,q -输出宽度

特征映射变换矩阵和滤波变换矩阵被认为是中间矩阵,其维数大于特征映射本身。feature map的尺寸= C × H × W, (3x3x3) feature map transform的尺寸= CRS × NPQ (12x4)

 

https://avoid.overfit.cn/post/0b8715aa855045c693be2e9b20eb93ba

标签:卷积,NCHW,矩阵,变换,NHWC,内存,GPU
From: https://www.cnblogs.com/deephub/p/17745547.html

相关文章

  • LLM实践-在Colab上使用免费T4 GPU进行Chinese-Llama-2-7b-4bit推理
    一、配置环境1、打开colab,创建一个空白notebook,在[修改运行时环境]中选择15GB显存的T4GPU.2、pip安装依赖python包!pipinstall--upgradeaccelerate!pipinstallbitsandbytestransformers_stream_generator!pipinstalltransformers!pipinstallsentencepiece!pip......
  • 在linux服务器上安装scvi后无法调用GPU
    问题描述:WARNING-NoGPU/TPUfound,fallingbacktoCPU.(SetTF_CPP_MIN_LOG_LEVEL=0andrerunformoreinfo.) 解决方案: 测试如下代码,如果为True则执行第二步。importtorchprint(torch.cuda.is_available())测试如下代码importjaxprint(jax.devices......
  • Unity性能优化-GPU Instancing
    GPUInstancing是Unity的一种优化技术。使用GPUInstancing可以在一个DrawCall中同时渲染多个相同或类似的物体,从而减少CPU和GPU的开销。官方文档:https://docs.unity3d.com/Manual/GPUInstancing.html要启用GPUInstancing,我们可以选中一个材质,然后在Inspector窗口勾选Enable......
  • GPU创建聊天GPT
    新建项目:然后上传代码压缩包。点击进入开发环境pipinstall-rChatGLM2-6B/requirements.txt-ihttps://pypi.virtaicloud.com/repository/pypi/simple加载模型pythonChatGLM2-6B/cli_demo.py......
  • 服务器Docker搭建CUDA10.2+PaddleDetection2.4.2-GPU环境
    1、容器建立由于目标服务器的显卡版本较老,CUDA只支持到10.2,所以需要选用老版本Docker镜像,百度网盘链接:https://pan.baidu.com/s/1GiQzWRypaeBNFWETWFAV-Q?pwd=5f12 使用命令将镜像启动为容器:dockerrun--namenvidia-cuda10.2-cudnn7-1-p9001:22-p9002:8002-v/work/nod......
  • 问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
    解决:Opencv(3.1.0/3.4/4.1.0)找不到/opencv2/gpu/gpu.hpp问题环境:系统:Win10环境:Opencv3.4.0/4.1.0显卡:1080ti问题Windows下使用opencv3.4.0/4.1.0调用包含GPU模块函数getCudaEnabledDeviceCount()的示例时提示找不到/opencv2/gpu/gpu.hpp。解决方式替换代码中引用的”......
  • Anaconda+GPU安装pytorch
    今天搞了半天,才安装上,各种版本问题。最后安装成功: 教程:2023最新pytorch安装教程,简单易懂,面向初学者(Anaconda+GPU)_时宇羽然的博客-CSDN博客......
  • PytorchGPU版本环境配置。Anconda + Pycharm。
    2023年9月12日深度学习课程是基于Pytorch框架有的没的因为之前瞎搞,环境乱七八糟,这次DL课程最好装上GPU版本,那么就通过这次一次性弄个好吧!绝对不是因为,我之前不会弄。(是这样的)课程需要配置好环境。最后经过一段时间的瞎搞乱搞的调整,Pytorch-GPU版本成功安装好了。我是根据B......
  • 检查torch是否是gpu版本
    检查torch是否是gpu版本1.查看PyTorch版本:打开Python交互式环境,导入torch包,使用命令torch.__version__查看PyTorch版本,如果版本名称中包含“cuda”,则表示是GPU版本。例如,如果版本名称为“1.7.0+cu101”,则是支持CUDA10.1的GPU版本。2.查看torch.cuda:在Python交互式环境中......
  • 使用GPU搭建支持玛雅(Maya)和Adobe AI,DW,PS的职校云计算机房
    背景学校为职业学校,计算机教室需要进行Maya、Adobe Illustrator、AdobeDreamweaver、AdobePhotoShop等软件的教学。每个教室为35用户。资源需求为4核、8G内存、80G硬盘。基于桌面虚拟化VDI技术的机房在成本、可管理性方面,相对于传统胖终端的机房,具有独特的优势。不足之处是由......