CUDA存储器模型
除了执行模型以外,CUDA也规定了存储器模型(如图2所示)和一系列用于主控CPU与GPU间通信的不同地址空间。图中红色的区域表示GPU片内的高速存储器,橙色区域表示DRAM中的的地址空间。
 图2 CUDA存储器模型
        首先,是最底层的寄存器(register,REG)。对每个线程来说,寄存器都是私有的--这与CPU中一样。
        如果寄存器被消耗完,数据将被存储在本地存储器(local memory)。本地存储器对每个线程也是私有的,但是数据时被保存在帧缓冲区DRAM中,而不是片内的寄存器或者缓存中。线程的输入和中间输出变量将被保存在寄存器或者本地存储器中。
        然后是用于线程间通信的共享存储器。共享存储器是一块可以被同一block中的所有thread(上节提到过,一个block最多可以有512个thread)访问的可读写存储器。访问共享存储器几乎和访问寄存器一样快,是实现线程间通信的延迟最小的方法。共享存储器可以实现许多不同的功能,如用于保存共用的计数器(例如计算循环迭代次数)或者block的公用结果(例如计算512个数的平均值,并用于以后的计算)。
        除此以外,还有两种只读的地址空间—常数存储器和纹理存储器(constant memory and texture memory),它们是利用GPU用于图形计算的专用单元发展而来的。
        常数存储器空间较小(只有64k),支持随机访问。
        纹理存储器尺寸则大得多,并且支持二维寻址(传统的缓存只支持一维寻址)。
        这两种存储器实际存在于帧缓冲区DRAM中,但由于它们的只读性质,在GPU片内可以进行缓存,从而加快访问速度。这两种存储器并不要求缓存一致性—它们是只读的。但这也意味着如果CPU或者GPU要更改常数存储器或者纹理存储器的值,缓存中的值在更新完成之前也无法使用。CUDA程序中,常数存储器用于存储需要经常访问的只读参数,而是用插值或者滤波的纹理存储器访问对大尺寸的二维或者三维图象或者采样序列进行高带宽的流式访问。
       最后是全局存储器(global memory),使用的是普通的显存。整个网格中的任意线程都能读写全局存储器的任意位置,并且既可以从CPU访问,也可以从CPU访问。由于全局存储器是可写的,GPU片内没有对其进行缓存。

【并行计算-CUDA开发】CUDA存储器模型的更多相关文章

  1. CUDA开发 - CUDA 版本

    "CUDA runtime is insufficient with CUDA driver"CUDA 9.2: 396.xx CUDA 9.1: 387.xx CUDA 9.0: ...

  2. 【并行计算-CUDA开发】CUDA并行存储模型

    CUDA并行存储模型 CUDA将CPU作为主机(Host),GPU作为设备(Device).一个系统中可以有一个主机和多个设备.CPU负责逻辑性强的事务处理和串行计算,GPU专注于执行高度线程化的并行 ...

  3. 【并行计算-CUDA开发】CUDA线程、线程块、线程束、流多处理器、流处理器、网格概念的深入理解

    GPU的硬件结构,也不是具体的硬件结构,就是与CUDA相关的几个概念:thread,block,grid,warp,sp,sm. sp: 最基本的处理单元,streaming processor  最 ...

  4. CUDA上深度学习模型量化的自动化优化

    CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...

  5. Windows平台CUDA开发之前的准备工作

    CUDA是NVIDIA的GPU开发工具,眼下在大规模并行计算领域有着广泛应用. windows平台上面的CUDA开发之前.最好去NVIDIA官网查看说明,然后下载对应的driver. ToolKits ...

  6. 【ARM-Linux开发】【CUDA开发】【深度学习与神经网络】Jetson Tx2安装相关之三

    JetPack(Jetson SDK)是一个按需的一体化软件包,捆绑了NVIDIA®Jetson嵌入式平台的开发人员软件.JetPack 3.0包括对Jetson TX2 , Jetson TX1和J ...

  7. 【CUDA开发】CUDA面内存拷贝用法总结

    [CUDA开发]CUDA面内存拷贝用法总结 标签(空格分隔): [CUDA开发] 主要是在调试CUDA硬解码并用D3D9或者D3D11显示的时候遇到了一些代码,如下所示: CUdeviceptr g_ ...

  8. 【CUDA开发】CUDA编程接口(一)------一十八般武器

    子曰:工欲善其事,必先利其器.我们要把显卡作为通用并行处理器来做并行算法处理,就得知道CUDA给我提供了什么样的接口,就得了解CUDA作为通用高性能计算平台上的一十八般武器.(如果你想自己开发驱动,自 ...

  9. 【神经网络与深度学习】【CUDA开发】caffe-windows win32下的编译尝试

    [神经网络与深度学习][CUDA开发]caffe-windows win32下的编译尝试 标签:[神经网络与深度学习] [CUDA开发] 主要是在开发Qt的应用程序时,需要的是有一个使用的库文件也只是 ...

随机推荐

  1. MySQL 下载与安装使用教程

    MySQL 官网地址:https://www.mysql.com/ 等待下载完成 双击运行 如果有需要 我们可以新增一个用户出来 点击 Add User,不需要的话 直接 点击 next 默认的MyS ...

  2. 【细谈Java并发】谈谈LinkedBlockingQueue(转)

    最近在看concurrent包的知识,看到LinkedBlockingQueue,发现一篇好文推荐给大家.原文地址:[细谈Java并发]谈谈LinkedBlockingQueue 1.简介 上篇我们介 ...

  3. Markdown使用教程(转载收藏)

    基础语法 标题 Markdown支持6种级别的标题,对应html标签 h1 ~ h6 # h1 ## h2 ### h3 #### h4 ##### h5 ###### h6 以上标记效果如下: h1 ...

  4. DNS服务基础

    DNS服务器的功能 – 正向解析:根据注册的域名查找其对应的IP地址 – 反向解析:根据IP地址查找对应的注册域名(不常用) NS(声明DNS记录) A(正向解析记录) CNAME(解析记录别名) 安 ...

  5. Homebrew是什么?怎么关闭自动更新?

    Homebrew是MacOS 的软件包管理器. 通过它可以安装.卸载.更新.查看.搜索任何想要安装的软件.如:git, node等. 安装Homebrew /usr/bin/ruby -e " ...

  6. 如何从word中直接复制图片到编辑器中

    Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能.但是无法 ...

  7. 51nod1040 最大公约数之和,欧拉函数或积性函数

    1040 最大公约数之和 给出一个n,求1-n这n个数,同n的最大公约数的和.比如:n = 6时,1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15 看起来很简单 ...

  8. BZOJ1070: [SCOI2007]修车(最小费用最大流,思维)

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同 的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序, ...

  9. HTML/HTML5 知识点思维导图

    1 - 浏览器 | 浏览器页面构成 2 - 浏览器 | 浏览器内核相关知识点 3 - W3C | 对WEB标准以及W3C的理解与认识? 4 - 标签 | Doctype相关知识点 5 - 标签 | m ...

  10. HDU 1024 Max Sum Plus Plus ——(M段区间的最大和)

    感觉有点奇怪的是这题明明是n^2的复杂度,n=1e6竟然能过= =.应该是数据水了. dp[i][j]表示前j个数,分成i段,且最后一段的最后一个为a[j]的答案.那么转移式是:dp[i][j] = ...