CUDA C编程权威指南 第五章 共享内存和常量内存
共享内存是较小的片上内存,具有较低的延迟(相比全局,低20~30倍),提供更高的带宽(相比全局,10倍)
- block通信
- 用于全局内存数据的缓存
__shared__
来申请共享变量,如果共享内存大小在编译时是为知的,则需要加载extern
关键字extern __shared__ int tile[]
共享内存被分为32个同样大小的内存模型,称为存储体)(bank),有32个bank是因为有32个thread
通过warp共享内存的加载或存储操作,且在每个bank早上只访问不多余一个的内存地址,那么这个操作可以由一个内存事务来完成
共享内存中多个地址请求落在同一个bank中时,会发生内存提冲突,导致请求被重复执行.
单重典型warp发出共享内存请求:
7. 并行访问:多个地址访问多个bank:一个warp访问多个地址落在多个存储体中
- 串行访问:多个地址访问一个bank:多个地址属于同一个bank,如果warp中的32个thread访问同一个存储体不同地址,就会有32个内存事务
- 广播访问:单一thread读取一个bank:warp中所有的thread读取同一个bank相同的地址,若一个内存事务被执行,name被访问的地址就会广播到所有请求的线程中,只需要一个广播访问,但是带宽利用率很差,因为海藻油一部分字节被访问
同步
- 当不同步的多个线程修改同一个共享内存地址时,将导致线程内冲突,cuda提供障碍和内存栅栏来实现同步
void __syncthreads()
实现障碍,要求block中所有的线程等待直到所有线程到大该点- 栅栏
void __threadfence_block()
block内栅栏,保证栅栏前被调用线程产生的对共享内存和全局内存的所有写操作对展览后同一块的其他线程是可见的void __threadfence()
网格级内存栅栏,挂起调用的线程,直到全局内存中的所有写操作对相同网格内的所有线程都是可见的void __threadfence_system()
跨系统(包括主机和设备)
CUDA C编程权威指南 第五章 共享内存和常量内存相关推荐
- CUDA C编程权威指南 第四章 全局内存
基础 一般内存的设计:寄存器->缓存->主存->磁盘存储器 GPU内存设计 修饰符 变量名 存储器 作用域 生命周期 float var 寄存器 线程 线程 float var[10 ...
- CUDA C编程权威指南 第六章 流和并发
流 cuda流 流分为两种类型:1)隐式声明流(空流),2)显式声明流(非空流) cudaError_t cudaMemcpyAsync(void* dst,const void* src, size ...
- CUDA C编程权威指南 第七章 调整指令级原语
将程序分为两类:IO密集型和计算密集型 double value = in1 * in2 + in3 乘法后紧跟加法的模式被称为乘加法,或者MAD 简单的编译器会将一个MAD指令转换为:一个乘法指令和 ...
- CUDA C编程权威指南 第三章 CUDA执行模型
基础 每个GPU有多个SM(streaming multiprocessor) 当启动一个grid时,它的block会被分配给多个SM上执行,一个block一旦被调度到一个SM上,则这个block只会 ...
- 《CUDA C编程权威指南》——1.5节总结
本节书摘来自华章社区<CUDA C编程权威指南>一书中的第1章,第1.5节总结,作者[美] 马克斯·格罗斯曼(Max Grossman) ,更多章节内容可以访问云栖社区"华章社区 ...
- 《CUDA C编程权威指南》——3.4 避免分支分化
本节书摘来自华章计算机<CUDA C编程权威指南>一书中的第3章,第3.4节,作者 [美] 马克斯·格罗斯曼(Max Grossman),译 颜成钢 殷建 李亮,更多章节内容可以访问云栖社 ...
- c cuda 指定gpu_《CUDA C编程权威指南》——1.3 用GPU输出Hello World-阿里云开发者社区...
本节书摘来自华章计算机<CUDA C编程权威指南>一书中的第1章,第1.3节,作者 [美] 马克斯·格罗斯曼(Max Grossman),译 颜成钢 殷建 李亮,更多章节内容可以访问云栖社 ...
- 《CUDA C编程权威指南》——2.2 给核函数计时
本节书摘来自华章计算机<CUDA C编程权威指南>一书中的第2章,第2.2节,作者 [美] 马克斯·格罗斯曼(Max Grossman),译 颜成钢 殷建 李亮,更多章节内容可以访问云栖社 ...
- 《CUDA C编程权威指南》——2.4节设备管理
本节书摘来自华章社区<CUDA C编程权威指南>一书中的第2章,第2.4节设备管理,作者[美] 马克斯·格罗斯曼(Max Grossman) ,更多章节内容可以访问云栖社区"华章 ...
最新文章
- 沉浸式全息本是什么_“全息投影”走进健身房,打造沉浸式健身体验室,想来试试吗?...
- 对std::listT的封装
- 过拟合(overfitting)和欠拟合(underfitting)出现原因及如何避免方案
- html 手机分辨率,移动端各种分辨率手机屏幕----适配方法集锦
- 高效幂运算(JAVA)--拆分解法、二进制解法
- 考计算机一级用什么软件学,大学计算机一级考试用的是什么word软件
- C#连接控制西门子PLC
- 一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)
- layabox2.0 开发微信小游戏经验分享
- 计算机软件需要加书名号吗,软件著作权名称需要加书名号吗-举例说明一个软件的名称放在句子里应不应该用书名号,为什么?...
- html代码入门书记,“seo优化”学习基本的html代码知识(入门级)
- 如何将arcgis中shape要素文件转为mapgis中点线面
- DOORS入门教程系列:基本概念介绍(一)
- 我对INFOR WMS实施的一些感想
- C++关于函数声明 函数实现
- 几个不错的开源BPM系统
- 授予数据库账号dba权限_oracle数据库限制dba权限
- Swift Literal Convertibles
- GHOST系统封装教程 系统封装工具 XP系统封装(三)
- 基于Java web的大学生就业系统
热门文章
- Java继承知识之基本控制语句(if、switch与穿透现象)
- 红外接收头图片_常见红外接收头引脚型号及测量代换
- 微课|玩转Python轻松过二级(2.4节):常用内置函数用法精要2
- 微课|中学生可以这样学Python(例6.3):猜数游戏
- Python+flask+flask-email发送带附件的电子邮件
- Python版冒泡法排序算法
- C++ 容器适配器priority_queue的使用及实现
- 矩阵分析 第三章 内积空间 正规矩阵 Hermite矩阵
- syscall 系统调用陷入_系统调用深度剖析(上)
- 代理服务器ip地址搜索验证软件_代理服务器与ip分类介绍