基本概念
1.CPU的任务:为串行任务优化
2.GPU的任务:为并行任务优化
3.L4T ubuntu:基于NVIDIA Tegra芯片的ubuntu系统(linux for Tegra)
4.Tegra:继承了ARM CPU 和 NVIDIA GPU的处理器芯片
5.X86:高性能,复杂指令,多用于win
6.ARM:低功耗高效率,简易指令集,Linux
7.GPU的产生:CPU的两个瓶颈 存储器墙(IO跟不上)时钟频率墙(散热)
CPU到GPU
所有的处理优化逻辑变成计算核心
CUDA线程层次
block的意义:(为什么不直接用通过grid管理所有的thread)不用直接去分配N个线程 分班去管理 有利于内存管理
GPU上运行函数kernel对应一个Grid,每个Grid内有多个Block,每个Block由多个Thread组成。
执行原理参考1
执行原理参考2
硬件层面:一个DEVICE由多个SM和其他资源组成,一个SM由多个SP(CUDA Core)和其他资源组成
软件层面:一个Grid由多个block组成,Block由多个Thread组成,Block内的Thread可以通过共享内存通信,也可以通过函数同步
线程调度:CUDA的线程调度粒度是32个Thead,即1个Warp,Warp在SP上是随机且多次被调度执行的,Warp的切换开销可以忽略不计。