并行计算入门

并行计算入门 1 概述 1.1 并行计算 高性能计算(High Performance Computing)是计算机科学中的一个领域,其目的可以概括为优化性能,它包括了缓存技术、数据结构和算法、IO 优化、指令重组(instruction reorganization)、编译器优化等; 并行计算(Parallel Computing)是高性能计算下的一个细分领域,其主要思想是将复杂问题分解成若干个部分,将每一个部分交给独立的处理器(计算资源)进行计算,以提高效率;针对不同的问题,并行计算需要专用的并行架构,架构既可以是专门设计的,含有多个处理器的单一硬件或超级计算机,也可以是以某种方式互连的若干台的独立计算机构成的集群;并没有一个统一的并行计算架构适用于每一个问题,如果使用了错误的架构,并行计算甚至会导致性能下降。 1.2 硬件架构 中央处理器(Central Processing Unit)的主要功能是解释计算机指令,它由控制单元(Control Unit)、算术逻辑单元(Arithmetic Logic Unit)、乱序控制单元(Out-of-Order Control Unit)、分支预测器(Branch Predictor)、数据缓存(Data Cache)等部件组成;CPU 被设计为可以快速地处理各种通用计算任务并最小化延迟,但在并发性(时钟频率)方面受到限制; 图形处理器(Graphics Processing Unit, GPU)是英伟达(NVIDIA)在 1999 年 8 月发布 NVIDIA GeForce 256 时提出的概念;现代 GPU 的模型设计可以概括为几个关键点: GPU 的设计目的是最大化吞吐量(Throughput) 能够将程序中数据可并行的部分从 CPU 转移到 GPU 能够使用尽可能多的线程进行并行计算 GPU 拥有的内核数量相较于 CPU 多得多,可以有数千个同时运行的内核执行大规模并行计算,因此在早期专门应用于图形数据的处理,但随着近十几年的发展,其强大的并行处理能力也使其可以处理非图形数据,尤其在深度学习领域非常受欢迎; 在制造工艺的限制下,芯片的密度和最大面积都是有限的(摩尔定律),因此芯片设计实际上是功能和元件数量的权衡;出于对通用性的要求,CPU 的芯片设计必须使用较多种类的原件以增加其功能,同时放弃部分具有复杂功能的元件数量,而 GPU 的芯片设计则是通过移除部分具有复杂功能的元件来换取更多的空间,并集成更多的基本功能元件; GPU 设备由多个流多处理器(Streaming Multiprocessor)的处理器集群(Processor Cluster)组成。每个流多处理器都关联一个控制单元 和 L1 Cache,这样的设计使得一个芯片可以同时支持上百个指令流的并行执行;通常一个流多处理器在与全局 GDDR-5 内存交换数据之前都会利用与之关联 L1 Cache 和 L2 Cache 来减少数据传输的延迟;而又因为 GPU 通常拥有足够大的计算量,使得其不需要与 CPU 一样非常频繁地从内存中获取数据,因此 GPU 的缓存层一般是小于 CPU 的。 ...

August 12, 2020 · 12 min