GPU 和CPU通过 VLink 或者PCLe 相连。
每个SM 又含有多个cuda core,多个SM共享全局内存,通过L2 高速缓存和全局内存进行相连,不同代的GPU之间的体系结构有所不同。
右边是一个SM 上的 内存,有共享内存,局部内存,寄存器,可以访问全局内存、常数内存、纹理内存。
每个线程 有自己的私有本地内存(local memory)、每个线程块包含共享内存,可以被线程块中的所有线程共享,其生命周期与线程块一致。共享内存的访问速度非常块,比全局内存的访问要快100倍。
所有的线程都可以访问全局内存,量大,但是访问速度是最慢的
常量和纹理内存用的比较少,所有的线程都能对它们进行读操作,不能进行写操作。
多个MP共享L2
存储量越大 访问速度越慢。CPU/GPU 的内存结构中,一级和二级缓存都是不可编程的,对用户是不开放的(完全不可控制的存储设备)。比如 L1 L2 缓存,寄存器,是不可编程的,是有cpu 、GPU进行管理控制的。
全局内存生命周期是从开始申请到释放,如果程序结束了,但是没有对释放内存的操作,全局内存的生命周期还是没有结束、
全局内存生命周期(显存):
当一个线程开始执行,它会拥有自己的本地内存、寄存器,当线程结束时,对应的内存也就结束了。