CUDA入门之内存数据传输

本文介绍了CUDA内存数据传输的过程,包括从CPU到GPU的数据拷贝、GPU运算以及结果回传。CUDA内存模型涉及寄存器、缓存和内存,内存传输函数如cudaMalloc和cudaMemcpy用于管理GPU内存和数据传输。文章以两个数组相加为例,展示了CUDA中如何实现这一操作,强调了线程和内存控制的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • CUDA的内存数据模型

 

CUDA中的模型是这样的:CPU把数据拷贝给GPU,GPU运算,GPU运算完之后把数据拷贝回CPU。

1.Copy data from CPU memory to GPU memory.

2. Invoke kernels to operate on the data stored in GPU memory.

3. Copy data back from GPU memory to CPU memory.

 

1.把数据从CPU内存拷贝到GPU内存

2.调用核函数对存储在GPU内存中的数据进行操作

3.将数据从GPU内存传回到CPU内存

 

这里多说一下,计算记的存储结构以及计算的效率(也就是读写数据的速度),其实最快的是寄存器,其次是缓存(缓存一般有一二三,三层,如下图所示),然后才是内存,后面是磁盘。金字塔越往下读写速度越慢,但是呢成本越低存储量也就越大。

 

上图来源于网络

 

我们的程序在运行的时候,数据一般会加载进内存,然后在计算的时候从内存又加载到寄存器,在寄存器上完成计算,之后再拷贝出来。为了提高效率呢,就搞了一个缓存,缓存的效率比内存还高。因此程序在运行的时候就先去缓存里面找,缓存里有数据,就传输到寄存器上去做计算。

CPU内存有缓存,相应的,GPU内存也有缓存。

所以说上面说的把数据从CPU内存拷贝到GPU内存,这只是个宽泛的说法,其实底层内核还做了很多其他的操作,拷贝到GPU之后肯定有一部分被拷贝到GPU的缓存了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值