高性能计算相关概念

最近在参加IPCC竞赛,在和老师交流的过程中,发现自己对很多基本的概念,业界的名词并没有那么了解,由于一直在做数值分析这块的东西,很多之前学过的内容慢慢的都遗忘了,为了扩宽自己的知识面,最近在看一些科普性质的博客,将一些比较精华的部分摘了下来,以便自己温故而知新。

  • 高性能计算的相关概念

    高性能计算(High performance computing, 缩写HPC) 指通常使用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计 算资源操作)的计算系统和环境。有许多类型的HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。大多数基于集群的HPC系统使用高性能网络互连,比如那些来自 InfiniBand 或 Myrinet 的网络互连。基本的网络拓扑和组织可以使用一个简单的总线拓扑,在性能很高的环境中,网状网络系统在主机之间提供较短的潜伏期,所以可改善总体网络性能和传输速率。高性能计算主要涉及微处理器、高性能计算机系统、高性能并行算法与应用等多个核心技术。

    我们平时经常说几节点,几核,几进程,几线程,这里面的节点就是指某一集群中的某台或多台计算机,核便是指计算机中的处理器,现在一般都是多核处理器,即在一个处理器上集成多个运算核心,从而提高计算能力。进程是一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。

  • 高性能计算的分类
    高性能集群在计算过程中,各节点是协同工作的,它们分别处理大问题的一部分,并在处理中根据需要进行数据交换,各节点的处理结果都是最终结果的一部分。高性能集群的处理能力与集群的规模成正比,是集群内各节点处理能力之和,但这种集群一般没有高可用性。高性能计算的分类方法很多。

  • 从并行任务间的关系分类

  1. 高吞吐计算(High-throughput Computing)
    有一类高性能计算,可以把它分成若干可以并行的子任务,而且各个子任务彼此间没有什么关联。因为这种类型应用的一个共同特征是在海量数据上搜索某些特定模式,所以把这类计算称为高吞吐计算。所谓的Internet计算都属于这一类。按照Flynn的分类,高吞吐计算属于SIMD(Single Instruction/Multiple Data,单指令流-多数据流)的范畴。
  2. 分布计算(Distributed Computing)
    另一类计算刚好和高吞吐计算相反,它们虽然可以给分成若干并行的子任务,但是子任务间联系很紧密,需要大量的数据交换。按照Flynn的分类,分布式的高性能计算属于MIMD(Multiple Instruction/Multiple Data,多指令流-多数据流)的范畴。

有许多类型的HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。大多数基于集群的HPC系统使用高性能网络互连,基本的网络拓扑和组织可以使用一个简单的总线拓扑。HPC系统由计算、存储、网络、集群软件四部分组成。

  • 从计算模型类型分类
    从数据流和指令的角度把计算模型分为4类(费林分类法)
    (1) 单指令单数据流 (SISD): 非并行计算的模型,典型例子就是单核 CPU,所有数据都被一个处理器顺次处理,某一时刻只能使用一个指令。
    (2) 单指令多数据流 (SIMD): 指多个不同的数据同时被相同的执行、指令集或者算法处理, GPU的计算模型。
    (3) 多指令单数据流 (MISD): 在同一个数据流上执行不同的指令。
    (4) 多指令多数据流 (MIMD): 是多核CPU的计算模型。

  • 高性能计算HPC系统技术特点
    高性能计算HPC系统的主流处理器是X86处理器,操作系统是linux系统(包括Intel、AMD、NEC、Power、PowerPC、Sparc等)、构建方式采用刀片系统,互联网络使用IB和10GE。
    HPC集群中计算节点一般分3种: MPI节点、胖节点、GPU加速节点。双路节点称为瘦节点(MPI节点),双路以上称为胖节点;胖节点配置大容量内存;集群中胖节点的数量要根据实际应用需求而定。
    HPC的算法(或者算法中的部分满足,其他部分通过CPU协调)必须满足一下几点要求:
    (1) 每个数据(数据包)都需要经过相同的流程来处理
    (2) 数据之间并没有相关性,即数据的计算不依赖另外一些数据的计算结果
    (3) 数据量庞大

注:

  • 胖节点和瘦节点(MPI节点)区别
    胖节点一般是在HPC领域的概念。在高性能计算中,有些任务可以进行多计算节点并行计算,比如用多节点的刀片机来进行。而有些任务不能进行并行计算,只能单一节点计算,这就用到了所谓胖节点,胖节点一般处理能力强,有强大的处理器和比普通节点更大的内存、网络来进行单一任务的计算,这种节点一般用四路或者八路服务器。通常把双路称为瘦节点,将多路称为胖节点。相对而言,双路服务器作为主流产品,其价格比较低,通常也就是几万元人民币,但是多路服务器价格相对高一些,通常需要几十万元。
    对于瘦节点而言,需要很多节点共同来承担大的计算作业。它采用软件的方法,将作业分拆给多个瘦节点,对于系统而言,需要大量的性能来处理通信。如果采用胖节点,例如 HP ProLiant DL785 G6,它是一款采用AMD Opteron六核处理器的8路服务器,具有512G内存和11个PCI-e I/O插槽。它具有48个处理内核,笼统看就相当于原来的48个单路服务器,它所具有的处理能力是惊人的。作为一个整体,服务器8个处理器之间进行数据交换,其速度远远高于节点机,因而具有更高的处理效能。
    胖节点也好,瘦节点也好,应该说,各有其适用的范围。以胖节点为例,它就适用于对内存、处理性能要求高的计算任务。其实,除了胖节点、瘦节点之外,还有厚节点和图形加速节点的分别。对于用户而言,应该根据业务计算的需要,来合理选择计算节点。

  • x86
    X86就是采用CISC(Complex Instruction Set Computer,复杂指令架构计算机)架构的处理器,其价格便宜、兼容性好、稳定性较差、安全性不算太高,主要用在中小企业之中。大多数CPU厂商(如AMD,Intel)生产的就是这种处理器,与采用RISC架构的PowerPC(如苹果电脑)不同。
    在这里插入图片描述
    在CISC处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。
    在这里插入图片描述
    而RISC架构相对简单,它只要求硬件执行很有限且最常用的那部分指令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。主要用在中高档服务器中,特别是高档服务器全都采用RISC指令系统的CPU。

  • x86和ARM的 区别

    Intel x86使用复杂指令集(CISC),ARM使用精简指令集(RISC),属于这两种类中的各种架构之间最大的区别。具体来说,就是ARM追求低功耗,x86追求性能,X86无法做到 ARM的功耗,而ARM也无法做到X86的性能

    x86服务器最大的特色在于可以兼容Windows操作系统,全部都采用了Intel的CPU。而Intel的x86服务器也可以分为两代,最初采用的 80x86系列在发布了产品80486后,Intel对该系列产品进行了重新命名并注册,这也就是现在Intel的Pentium系列,当然,这个系列在中国还有个更响亮的名字,即奔腾系列。
      目前奔腾系列的CPU包括:Pentium、Pentium MMX、Pentium Pro、PII、PII Xeon(至强)、PIII、PIII Xeon、P4 Xeon、Celeron2(赛扬)等。
      
      在PC领域,Intel的CPU一枝独秀。而在移动端呢?那就当属ARM了。ARM全称为Advanced RISC Machine,也就是进阶精简指令集机器。ARM是RISC微处理器的代表作之一,其广泛的在嵌入式系统设计中被使用。而且ARM处理器最大的特点在于节能,这也是其在移动通信领域无人能敌的原因之一。
      
    ARM与X86大比拼
      从几个方面比较ARM与X86架构Intel和ARM的处理器,除了最本质的复杂指令集(CISC)和精简指令集(RISC)的区别之外,下面我们再从以下几个方面对比下ARM和X86架构。
      1、制造工艺ARM和Intel处理器的一大区别是ARM从来只是设计低功耗处理器,Intel的强项是设计超高性能的台式机和服务器处理器。
      一直以来,Intel都是台式机的服务器行业的老大。然而进入移动行业时,Intel依然使用和台式机同样的复杂指令集架构,试图将其硬塞入给移动设备使用的体积较小的处理器中。但是Intel i7处理器平均发热率为45瓦。基于ARM的片上系统的发热率最大瞬间峰值大约是3瓦,约为Intel i7处理器的1/15。其最新的Atom系列处理器采用了跟ARM处理器类似的温度控制设计,为此Intel必须使用最新的22纳米制造工艺。
      2、64位计算对于64位计算,ARM和Intel也有一些显著区别。Intel并没有开发64位版本的x86 指令集。64位的指令集名为x86-64(有时简称为x64),实际上是AMD设计开发的。Intel想做64位计算,它知道如果从自己的32位x86架构进化出64位架构,新架构效率会很低,于是它搞了一个新64位处理器项目名为IA64。由此制造出了Itanium系列处理器。
      而 ARM在看到移动设备对64位计算的需求后,于2011年发布了ARMv8 64位架构,这是为了下一代ARM指令集架构工作若干年后的结晶。为了基于原有的原则和指令集,开发一个简明的64位架构,ARMv8使用了两种执行模式,AArch32和AArch64。顾名思义,一个运行32位代码,一个运行64位代码。ARM设计的巧妙之处,是处理器在运行中可以无缝地在两种模式间切换。这意味着64位指令的解码器是全新设计的,不用兼顾32位指令,而处理器依然可以向后兼容。
      3、异构计算ARM的 big.LITTLE架构是一项Intel一时无法复制的创新。在big.LITTLE架构里,处理器可以是不同类型的。传统的双核或者四核处理器中包含同样的2个核或者4个核。一个双核Atom处理器中有两个一模一样的核,提供一样的性能,拥有相同的功耗。ARM通过big.LITTLE向移动设备推出了异构计算。这意味着处理器中的核可以有不同的性能和功耗。当设备正常运行时,使用低功耗核,而当你运行一款复杂的游戏时,使用的是高性能的核。

    这是什么做到的呢?设计处理器的时候,要考虑大量的技术设计的采用与否,这些技术设计决定了处理器的性能以及功耗。在一条指令被解码并准备执行时,Intel和ARM的处理器都使用流水线,就是说解码的过程是并行的。
    为了更快地执行指令,这些流水线可以被设计成允许指令们不按照程序的顺序被执行(乱序执行)。一些巧妙的逻辑结构可以判断下一条指令是否依赖于当前的指令执行的结果。Intel和ARM都提供乱序执行逻辑结构,可想而知,这种结构十分的复杂,复杂意味着更多的功耗。

那为什么反而ARM的比X86耗电少得多呢。这就和另外一个因素相关了,那就是设计。

设计又分为前端和后端设计,前端设计体现了处理器的构架,精简指令集和复杂指令集的区别是通过前端设计体现的。后端设计处理电压、时钟等问题,是耗电的直接因素。当然,其中任何一项都会使得时钟和电源所控制的模块无法工作。他们的区别在于,门控时钟的恢复时间较短,而电源控制的时间较长。此外,如果条单条指令使用多个模块的功能,在恢复功能的时候,并不是最慢的那个模块的时间,而可能是几个模块时间相加,因为这牵涉到一个上电次序的问题,也就是恢复工作时候模块间是有先后次序的,不遵照这个次序,就无法恢复。而遵照这个次序,就会使得总恢复时间很长。

所以在后端这块,可以得到一个结论,为了省电,可以关闭一些暂时不会用到的处理器模块。但是也不能轻易的关闭,否则一旦需要,恢复的话会让完成某个指令的时间会很长,总体性能显然降低。此外,子模块的门控时钟和电源开关通常是设计电路时就决定的,对于操作系统是透明的,无法通过软件来优化。

再来看前端。ARM的处理器有个特点,就是乱序执行能力不如X86。换句话说,就是用户在使用电脑的时候,他的操作是随机的,无法预测的,造成了指令也无法预测。X86为了增强对这种情况下的处理能力,加强了乱序指令的执行。此外,X86还增强了单核的多线程能力。这样做的缺点就是,无法很有效的关闭和恢复处理器子模块,因为一旦关闭,恢复起来就很慢,从而造成低性能。为了保持高性能,就不得不让大部分的模块都保持开启,并且时钟也保持切换。这样做的直接后果就是耗电高。而ARM的指令强在确定次序的执行,并且依靠多核而不是单核多线程来执行。这样容易保持子模块和时钟信号的关闭,显然就更省电

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"高性能并行计算"课程讲义 第一部分并行计算基础 第一章预备知识 1.1 并行计算的目标和内容. . . . . . . . . . . . . . . . . . 5 1.2 并行计算机发展历程. . . . . . . . . . . . . . . . . . . 6 1.2.1 计算机系统发展简史. . . . . . . . . . . . . . . . . . 6 1.2.2 并行计算机发展简述. . . . . . . . . . . . . . . . . . 7 1.3 目前世界高性能计算机的状况. . . . . . . . . . . . . . . 9 1.4 可扩展的并行计算机体系结构. . . . . . . . . . . . . . . 11 1.4.1 对称多处理机系统. . . . . . . . . . . . . . . . . . . 11 1.4.2 分布共享存储处理机系统. . . . . . . . . . . . . . . . 13 1.4.3 大规模并行计算机系统. . . . . . . . . . . . . . . . . 14 1.4.4 机群系统. . . . . . . . . . . . . . . . . . . . . . . 15 1.5 国内外超级计算中心状况. . . . . . . . . . . . . . . . . 16 1.5.1 美国超级计算中心简介. . . . . . . . . . . . . . . . . 16 1.5.2 中国大陆超级计算中心简介. . . . . . . . . . . . . . . 17 第二章基础并行算法 2.1 并行计算基本概念. . . . . . . . . . . . . . . . . . . . 21 2.2 并行算法设计基本原则. . . . . . . . . . . . . . . . . . 22 2.3 区域分解方法. . . . . . . . . . . . . . . . . . . . . . 23 2.4 功能分解方法. . . . . . . . . . . . . . . . . . . . . . 24 2.5 流水线技术. . . . . . . . . . . . . . . . . . . . . . . 25 2.6 分而治之方法. . . . . . . . . . . . . . . . . . . . . . 27 2.7 同步并行算法. . . . . . . . . . . . . . . . . . . . . . 27 2.8 异步并行算法. . . . . . . . . . . . . . . . . . . . . . 28 2.9 作业. . . . . . . . . . . . . . . . . . . . . . . . . . 28 第二部分并行算法设计与实现 第三章矩阵并行计算 3.1 并行矩阵乘法. . . . . . . . . . . . . . . . . . . . . . 32 3.1.1 串行矩阵乘法. . . . . . . . . . . . . . . . . . . . . 32 3.1.2 行列划分算法. . . . . . . . . . . . . . . . . . . . . 33 3.1.3 行行划分算法. . . . . . . . . . . . . . . . . . . . . 33 3.1.4 列列划分算法. . . . . . . . . . . . . . . . . . . . . 34 3.1.5 列行划分算法. . . . . . . . . . . . . . . . . . . . . 35 3.1.6 Cannon 算法. . . . . . . . . . . . . . . . . . . . . .35 3.2 线性代数方程组并行求解方法. . . . . . . . . . . . . . . 36 3.2.1 分布式系统的并行LU 分解算法. . . . . . . . . . . . . .37 3.2.2 三角方程组的并行解法. . . . . . . . . . . . . . . . . 38 3.3 对称正定线性方程组的并行解法. . . . . . . . . . . . . . 41 3.3.1 Cholesky 分解列格式的并行计算. . . . . . . . . . . . .41 3.3.2 双曲变换Cholesky 分解. . . . . . . . . . . . . . . . .42 3.3.3 修正的双曲变换Cholesky 分解. . . . . . . . . . . . . .44 3.4 三对角方程组的并行解法. . . . . . . . . . . . . . . . ..46 3.5 经典迭代算法的并行化. . . . . . . . . . . . . . . . . . 47 3.5.1 Jacobi 迭代法. . . . . . . . . . . . . . . . . . . . .47 3.5.2 Gauss-Seidel 迭代法. . . . . . . . . . . . . . . . . .48 3.6 异步并行迭代法. . . . . . . . . . . . . . . . . . . . . 49 3.6.1 异步并行迭代法基础. . . . . . . . . . . . . . . . . . 49 3.6.2 线性迭代的一般收敛性结果. . . . . . . . . . . . . . . 50 3.7 代数特征值问题的并行求解. . . . . . . . . . . . . . . . 51 3.7.1 对称三对角矩阵特征值问题. . . . . . . . . . . . . . . 51 3.7.2 Householder 变换. . . . . . . . . . . . . . . . . . . 52 3.7.3 化对称矩阵为三对角矩阵. . . . . . . . . . . . . . . . 53 3.8 作业. . . . . . . . . . . . . . . . . . . . . . . . . . 53 第三部分并行实现 第四章并行程序设计 4.1 并行编程模式的主要类型. . . . . . . . . . . . . . . . . 57 4.2 并行程序的基本特点. . . . . . . . . . . . . . . . . . . 57 4.3 并行程序的实现技术. . . . . . . . . . . . . . . . . . . 57 第五章消息传递编程接口MPI 5.1 MPI 简介. . . . . . . . . . . . . . . . . . . . . . . . 59 5.2 MPI 程序实例. . . . . . . . . . . . . . . . . . . . . . 59 第六章MPI 并行环境管理函数. . . . . . . . . . . . . . . . . 63 第七章MPI 进程控制函数 7.1 MPI 进程组操作函数. . . . . . . . . . . . . . . . . . . 65 7.2 MPI 通信子操作. . . . . . . . . . . . . . . . . . . . . 68 第八章MPI 点到点通信函数 8.1 阻塞式通信函数. . . . . . . . . . . . . . . . . . . . . 71 8.2 非阻塞式通信函数. . . . . . . . . . . . . . . . . . . . 77 8.3 特殊的点到点通信函数. . . . . . . . . . . . . . . . . . 82 8.4 MPI 的通信模式. . . . . . . . . . . . . . . . . . . . . 84 第九章MPI 用户自定义的数据类型与打包 9.1 用户定义的数据类型. . . . . . . . . . . . . . . . . . . 87 9.2 MPI 的数据打包与拆包. . . . . . . . . . . . . . . . . . 93 第十章MPI 聚合通信 10.1 障碍同步. . . . . . . . . . . . . . . . . . . . . . . .97 10.2 单点与多点通信函数. . . . . . . . . . . . . . . . . .. 99 10.3 多点与多点通信函数. . . . . . . . . . . . . . . . . . .103 第十一章MPI全局归约操作. . . . . . . . . . . . . . . . . . 107 第十二章HPL程序实例剖析. . . . . . . . . . . . . . . . . . 117 参考文献. . . . . . . . . . . . . . . . . . . . . . . . . .119 附录一并行程序开发工具与高性能程序库. . . . . . . . . . . .121 A.1 BLAS、LAPACK、ScaLAPACK .. . . . . . . . . . . . . . . .121 A.2 FFTW . . . . . . . . . . . . . . . . . . . . . . . . . .121 A.3 PETSc . . . . . . . . . . . . . . . . . . . . . . . . . 121 附录二MPI函数reference. . . . . . . . . . . . . . . . . . . 123 索引. . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
### 回答1: 并行计算是一种计算模式,指的是通过同时执行多个计算任务来提高计算效率的方法。在传统的计算模式中,只有一个计算任务被处理器执行,而在并行计算中,多个任务被同时执行,以提高计算速度和性能。 高性能计算是指通过使用高性能计算机和优化算法,以及充分利用计算资源来解决复杂的科学、工程和商业问题的计算方法。它通常通过并行计算的方式来实现,以加速计算过程,并在有限的时间内得到更准确和可靠的结果。 PDF(Portable Document Format)是一种跨平台的电子文档格式,它能够准确地保留文档的布局和格式,同时具有良好的可读性和可打印性。CSDN是中国最大的IT社区平台之一,提供了大量的IT技术文档和学习资源。 在计算科学领域,PDF文档可以用来记录并行计算高性能计算的技术和方法。在这些文档中,我们可以了解到并行计算的基本概念、并行计算的原理和模型、并行计算的应用领域等。同时,还可以了解到高性能计算的基本原理、高性能计算的应用场景和案例,以及高性能计算在各个领域中的重要作用。 通过阅读这些PDF文档,我们可以获取关于并行计算高性能计算的知识,了解并行计算高性能计算的最新技术和发展动态,以及掌握并行计算高性能计算的基本方法和应用技巧。这对于提高计算效率、解决复杂问题和推动科学研究和工程发展都具有重要的意义。 ### 回答2: 并行计算是指同时执行多个计算任务的一种计算模式,其目的是提高计算效率和性能。在传统的计算模式下,计算任务是按顺序一个一个执行的,而并行计算允许多个计算任务同时进行,利用多核处理器、分布式计算系统等技术实现任务的并行处理。 高性能计算是指利用先进的计算技术和硬件设备,以更高的运算速度和计算能力去解决科学、工程、金融等领域中的复杂问题。高性能计算主要应用于模拟计算、数据分析、人工智能等领域,可以加快计算完成时间,提高计算精度和模拟结果的可靠性。 在并行计算中,高性能计算有着重要的应用。通过并行计算的方式,利用多个计算节点同时进行计算,可以充分利用计算资源,提高计算效率和性能。而高性能计算是为了满足大规模计算需求而设计的计算平台,通过并行计算的方式可以更好地发挥高性能计算的优势。 PDF和CSDN是两个与并行计算高性能计算相关概念。PDF是一种可移植文档格式,可以用来存储和传递文档的信息,包括文本、图像、表格等。在并行计算高性能计算领域,科学家和工程师经常会使用PDF来发布和共享他们的研究成果和计算结果。 而CSDN是一个IT技术社区,提供各个领域的技术博客、论坛和代码分享平台。在CSDN上,人们可以找到很多关于并行计算高性能计算的资料和教程,学习和交流相关的知识和经验。 综上所述,并行计算高性能计算是两个相互关联的概念。通过并行计算的方式,可以提高计算效率和性能,而高性能计算则提供了运行并行计算的平台和资源。PDF和CSDN则是与并行计算高性能计算相关的文档格式和学习交流平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值