CUDA存储单元 【参加CUDA线上训练营】

目录

存储单元

Register 寄存器

Shared memory

Local Memory

Constant Memory

Texture Memory

Global Memory

常用内存函数

memory allccation/release 内存申请/释放

memory copy between cpu and gpu   cpu与gpu之间的内存拷贝


存储单元

global memory  全局内存

constant memory  常量内存

texture memory  纹理内存

local memory 本地内存

shared memory 共享内存

register 寄存器

 

on chip memory 黄色:GPU上的内存,速度快,空间小,寄存器和共享内存,常量缓存和纹理缓存在片上

on board memory 蓝色:位于PCB板子上的内存,速度慢,空间大,本地内存、全局内存、常量内存、纹理内存

 

Register 寄存器

每个SM中若申请寄存器数量多,则block数量就会变少。

若寄存器不够用,则会出现寄存器溢出的情况,系统自动使用local memory

Shared memory

 

 

好处:将shared memory分成32个bank,使得同一时间shared memory可以响应多个thread

缺点:同一个warp多个线程访问同一个bank中的不同地址,会冲突

总结:同一个bank在同一个时间周期内只能响应同同一个warp的一次请求。

 解决bank conflict

 给shared memory增加一列。(没明白)

Local Memory

 

Constant Memory

广播机制:同一时间constant memory可以向所有thread提供数据(广播)

疑问:一个warp的所有线程还是所有线程?

Texture Memory

Global Memory

 合并访存:读取global memory时,连续线程访问连续的数据,就可以返回连续数据

 

常用内存函数

memory allccation/release 内存申请/释放

CPU memory:malloc();memset();free();

GPU memory:cudaMalloc();cudaMemset();cudaFree()

memory copy between cpu and gpu   cpu与gpu之间的内存拷贝

cudaMemcpy(void*dst,const void*src, size t count, cudaMemcpyKind kinddst: destination memory address

cudaMemcpy(void*dst,const void*src, size t count, cudaMemcpyKind kind)
 - dst: destination memory address 目标内存地址
 - src: source memory address  源内存地址
 - count: size in bytes to copy  拷贝大小(单位字节)
 - kind: direction of the copy  拷贝方向

cudaMemcpyKind 拷贝方向
 - cudaMemcpyHostToDevice  主机 -> 设备
 - cudaMemcpyDeviceToHost  设备 -> 主机
 - cudaMemcpyDeviceToDevice 设备 -> 设备
 - cudaMemcpyHostToHost  主机 -> 主机
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值