CUDA内存使用

CUDA线程可以在运行过程中从多中内存空间访问数据,分为三个层次:

1,局部内存:每一个线程有其私有的局部内存。

2,共享内存:每一个线程块(thread block)有一个共享内存,可以被该线程块中的所有线程访问。

3,全局内存:所有的线程都能访问。

此外还有两个能被所有线程都访问的只读内存:constant 和texture内存,如下图所示:

CUDA编程模型假设系统由一个主机(CPU)和一个设备(GPU)组成,它们各自有自己的内存。在核的执行过程中,需要提供函数用于分配内存,释放内存,复制设备内存以及数据在主机内存和设备内存之间的传输。

设备内存可以以线性内存或者CUDA数组的方式进行分配,CUDA数组主要用于纹理获取。

线性内存通常使用 cudaMalloc()进行分配,用cudaFree()对其释放,主机内存和设备内存之间的数据传输通过cudaMemcpy()实现。

 cudaMallocPitch()和cudaMalloc3D()分别用于二维和三维数组的内存分配。

cudaMemcpy2D()和cudaMemcpy3D()分别用于二维和三维数组的内存复制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值