- 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的缓存了。