不同架构的计算机适合处理的工作负载具有不同类型,但是计算机本质上是利用应用中不同层次的并行性,如指令集并行、数据并行和线程级并行。另外现代计算机设计中提升单机硬件性能的两大主要手段就是多核并行和SIMD并行,多核并行编程通常需要使用线程级并行API,而SIMD并行则需要利用应用中的数据并行。
异构并行计算架构包含两个方面的内容:异构和并行。异构是指计算系统上具有两种或两种以上不同特点的处理器。目前来说,异构主要是指CPU+加速器;CPU主要指X86、Power、Arm等,加速器主要指GPU、FPGA、TPU等众核处理器。并行是指无论是要发挥CPU的峰值性能,还是要发挥加速器的峰值性能,都要使用并行的编程方式,因为绝大多数的加速器都是众核处理器。由于异构系统具有多种不同架构的处理器,不同架构处理器具有不同的特点,因此如果要发挥处理器的峰值性能,编程时算法映射也会有所不同。
由于制造工艺和提升主频遇到了挑战,摩尔定律的逐渐失效,目前计算机提升性能的方式主要时将多个单核的处理器集成在一起。为了增加多个单核处理器间协作的性能,集成起来的多个单核处理器会共享一些组件,比如缓存、执行单元等。由于协作导致的通信消耗,是的不能无休止地集成处理器。在通过多核提升性能的同时,单核里还会集成多个向量处理单元来提升性能,每个向量中的不同处理单元必须执行相同的逻辑路径,这称为SIMD。对多核处理器来说,每个处理器可独立执行不同的任务,而SIMD单元却必须共同执行同一操作。故要发挥多核向量处理器的性能,则必须同时考虑多核并行和SIMD并行。现代的GPU具有多个计算单元(SM,CU),而每个计算单元又是一个SIMD处理器。GPU和X86 CPU的不同在于:在基于GPU编程时无需知道SIMD的单元的宽度。
网友评论