app网站建设开发,宝应网站设计,建设 网站工作汇报,做海报的素材网站一、为什么要GPU 我们先看一个基本的神经网络计算 YF(x)AxB 这就是一次乘法一次加法 #xff0c;也叫FMA#xff0c;(fused multiply-add) 如果矩阵乘#xff0c;就是上面的那个式子扩展一下#xff0c;所以又用了这张老图 比如你要多执行好几个yAxB#xff0c;可能比较简…
一、为什么要GPU 我们先看一个基本的神经网络计算 YF(x)AxB 这就是一次乘法一次加法 也叫FMA(fused multiply-add) 如果矩阵乘就是上面的那个式子扩展一下所以又用了这张老图 比如你要多执行好几个yAxB可能比较简单的方法就是这个 上面能用但是一个线程效率低 在一个处理器周期里面是可以处理多个指令的这个时候引入了线程的概念来做这个事也就是所谓的并发。 并发能大大提升处理器处理任务的效率在一个时间段执行多个任务但是请注意这并不意味着这些任务是同时执行的虽然都在这个时间段执行比如一个时钟周期但是任务都会被随时中断供其他任务运行。
能不能自己弄自己的不要有别人打扰在同一时刻 那就得上并行了上了并行开启了多进程然后进程分布在不同的硬件core上大家互不打扰执行效率就高。总之在同一时刻大家互不打扰的一个方式就是多core自己玩自己的。 比如CPU来讲它多少core呢我看过前几天发布会有至强6的E系列最高288core的那GPU呢上一代H100是1万8。 刚才我们聊了要把矩阵运算要是分解为多个这种FMA(YAXB),最高效率肯定是多进程来实现并行。 就因为这个原因CPU从根上就不太可能和GPU相比 当然CPU也不是不能做矩阵乘就是效率低虽然现在也有多向量化支持的指令集甚至出现了AMX这种的指令集但是硬件上的限制还是决定了它的上限这也是硬件架构决定的比如下面的这张老图。 不同于CPU要处理好多复杂逻辑和上下文GPU就属于天生不能干细活但是擅长并行计算的那一趴了人家CPU本来就不是发明出来要干这个事的。
二、GPU的架构
这东西其实一开始也不是用于AI的它只要就是用来给游戏算多边形的后来吴恩达发现用GPU的多核能力运行AI的训练推理效果非常好再加上CUDA推出GPU编程简单了一大半GPU才慢慢从AI学界逐渐走向产业界。 他们之间的层级关系为GPC TPC SM CORE当然还有什么sram寄存器啥的也不在这里每个都点了我们玩AI的话呢从大面上讲主要就是玩SMSM最早是在G80的时候被定义出来的目前也是被沿用。
一个SM里面包含了很多的东西 刚我们讲了并发和并行的区别肯定并行处理单位时间处理能力更高但是在一个processor或者更高一级的概念内部我们肯定还是会调用thread来实现并发而GPU/CUDA玩的核心理念也叫SIMT就是单指令多线程。
不同于有的core级别设计的线程管理NV的GPU是SM级别的SIMT这些线程的调度是要靠Warp Scheduler来实现的。
简单说就是 因为表面上看起来是NN个硬件SKU有关个Threads来实现并行但是同一时刻因为硬件的限制也不可能。所以就要求一个 Warp 调度N个Threads来实现并行之间的调度这N个 Threads 以锁步的方式执行同一条指令其中任何一个单独的 Thread会使用自己的 Data 执行指令分支就通过这个方法让GPU同一时刻能实现超大的数据和指令处理能力。 当然这些都是硬件层面的软件层面要和CUDA配合。 先写到这下节来讲CUDA的软件层面怎么和硬件层面配合。