4.1 内存模型概述
Abstract: 本文介绍CUDA编程的内存模型概述,主要讲解CUDA包含的几种内存,以及各种内存的主要特点和用途,这篇像地图一样,指导我们后面的写作和学习。
Keywords: CUDA内存模型,CUDA内存层次结构,寄存器,共享内存,本地内存,常量内存,纹理内存,全局内存
内存模型概述
废话少说,我们直接进入主题。如果说我进入编程行业印象最深刻的一本书,看过我博客的人应该能猜到,我也不止一次地向大家推荐过《深入理解计算机系统》,那本书为我介绍了几乎所有的计算机基础知识和编程基础知识,真的很基础,里面有CPU结构、内存管理模型、汇编等等,从知识层次来讲,非常偏底层,但是难度确实够让人难受。那本书,我估计我只看了一半,看懂的应该有一半的三分之二,也就是我只看懂了全书的三分之一,推荐有时间一定要看看。
内存访问和管理是程序效率的关键点,高性能计算更是如此,上一篇举的例子关于运输原材料的例子,就是我们平时天天遇到的问题。我们希望有大量的高速度的大容量内存可以给我们的工厂(GPU核心)输送数据,但是根据我们目前的技术,大容量高速的内存不仅造价高,而且不容易生产。到目前为止(2018年5月),计算架构还是普遍采用内存层次模型来获得最佳的延迟和带宽。
CUDA也采用了内存层次模型,结合了主机和设备内存系统,展现了完整的内存层次模型,其中大部分内存我们可以通过编程控制,来使我们的程序性能得到优化。
如果你之前写的程序都没怎么管理过内存,那请先练习下C语言,可能会有更好的理解。