

并行计算十分火热,在人工智能、大数据的应用非常广泛,在目前我们的工作中虽然很少接触到并行计算,但了解
如今仅通过提高主频的方式增强计算能力的方式已经很难满足海量数据的计算量需求,以GPU(图形处理器)为代表的众核计算不断兴起。在以前GPU仅仅只应用于图像显示,而如今随着GPU中核心数和计算能力的不断提升,计算架构不断完善,因此提出了利用图形处理器来计算原本由中央处理器处理的计算任务。
简单的讲,如上图中CPU结构上比GPU复杂得多,但GPU最直观的感受是计算单元非常多,这众多的计算单元直接决定了GPU非常适用于计算而非逻辑判断。例如在一些矩阵的运算(在机器学习中大量应用)是非常适用于GPU计算的。
GPU的SIMT的执行模型,即单指令多线程的并行执行模型。上图即为GPU的SIMT的一个简单示例,其中warp是线程簇,下方为时间周期。上图中每个周期运行对多个线程运行相同的指令。同时结合类似流水线的特性,当前指令执行完毕时,即图中前四个周期结束时,下一个乘法指令已经准备就绪可以立即执行了。
由于GPU并行计算中采用SIMT的计算体系,相同线程簇中的线程在同一时间周期执行相同的指令,因此当设计的程序出现比较多的分支时,会出现明显的线程分歧,造成性能的下降。如上图中当程序出现分支时,有一部分线程执行当前分支,其他线程需要等待。在下一个时序中,程序执行另一个分支,部分线程执行该分支,而其他不属于该分支的线程需要等待。当最后结束分支时,所有线程才能继续同时执行其他代码。我们可以得出在当出现分支时,是需要部分线程进行等待的,不能最大化利用GPU的计算资源,会造成效率的下降。返回搜狐,查看更多