1.HPC引言

146 阅读6分钟

高性能计算概要

高性能计算(High Performance Computing, HPC)在AI浪潮下越来越火热,那么究竟什么是HPC?在Prof Jiang的课上我们一探究竟。

HPC的关键是并行处理(Parallel Processing),一般来说我们会把程序跑到超级计算机或者集群上,来加速我们当前的代码。如何高效的利用集群节点就是我们高性能计算主要解决的问题。

下面一个公式:

FullDomainHPC=FullStackHPC+FullNetworkHPCFull-Domain HPC = Full-Stack HPC + Full-Network HPC

FullStackHPCFull-Stack {HPC}指的是一个单个的计算节点;
FullNetworkHPCFull-Network HPC指的是计算节点和数据中心之间的计算和通信.

如何高效利用这些计算资源呢?主要有两种方式:分区(Partitioning)和拷贝(Duplication)

Full-Stack HPC on Compute Nodes

计算节点上的全栈HPC指的是什么呢?实际上是一套从上到下的高性能方案。探索所有软硬件的并行性。从上到下依次为:

层级对象对应方案
Level6UserExecutable tablePrograms
Level5High-Level LanguageC++, Java, MPI, OpenMP, etc
Level4Assembly LanguageAssembly Code
Level3System SoftwareOS, Library Code
Level2MachineISA
Level1ControlMicrocode or Hardwired
Level0Digital LogicCircuts, Gates, etc

Distributed Heterogeneous Systems(Full-Network HPC)

GPT4使用了至少285,000个CPUs和10,000个GPUs,分布式在其中大显身手,而其中网络通信又是关键中的关键。

首先在Full-Stack HPC中,分布式操作系统可以负责各个节点之前的管理,在各个节点的通信之中,可以使用分区和拷贝进行程序加速。

Partitioning分区之后可以将通信进行流水线化,提升通信效率;
Duplication而将我们的信息拷贝若干份之后,可以并行化发送,同样提升效率。

我们做HPC的关键就是节点内加速与节点间加速,即Full-Stack HPC + Full-Network HPC

高性能计算的计算思维(Computational Thinking)

计算思维是一种心智技能,要求我们将计算机科学中的概念、方法、问题应用到各个领域当中。它有些类似于数据科学,计算思维无处不在,难以用单一的定义涵盖其所有的应用场景,因为它几乎融入到了所有的技术领域。

计算思维有四个核心的特征

  1. 分解(Decomposition): 将复杂问题或系统拆分成为更小、更容易处理的部分
  2. 模式识别或者数据表示(Pattern Recognition/Data Representation): 发现数据或者问题的规律,并且将其转换为计算机可以处理的形式。
  3. 概括和抽象(Generalization/Abstraction)" 提取问题的核心逻辑,忽略细节,形成通用解决方案。
  4. 算法(Algorithms): 设计一系列明确的步骤或规则来解决问题。

那么我们如何将计算思维应用起来呢?

这张图展示了计算思维的三个关键步骤: 抽象(Abstraction)+ 自动化(Automation)+分析(Analysis)

image.png

HPC Applications

HPC有诸多应用,下面是一些例子。

  1. 工程与设计中的应用

    • 翼型设计:在航空航天领域,通过高性能计算来模拟空气在翼型周围流动的情况,分析不同形状翼型的升力、阻力等性能,从而优化设计,提高飞行器的性能和效率。
    • 内燃机设计:利用HPC模拟内燃机内部的燃烧过程、空气流动、热量传递等复杂的物理现象,帮助工程师优化燃烧室形状、进气和排气系统设计等,以提高发动机的动力输出,燃油经济并且降低排放。
    • 高速电路设计:在电子领域,HPC可以用于分析高速电路中信号的完整性,电磁干扰等问题,通过模拟电路的电气特性,优化电路布局布线,确保高速电路的可靠性和稳定性。
    • CAD/CAM:在工程设计和制造过程中,CAD/CAM软件依赖高性能计算来进行复杂的模型创建、仿真分析和数控加工编程等任务,提高产品设计和制造的精度和效率。
  2. 科学应用

    • 生物信息学:在生物信息学中,HPC用于分析和处理大量生物数据,如DNA序列匹配,通过对比不同生物的基因序列,寻找相似性研究生物进化和遗传疾病等;还有蛋白质折叠问题,利用高性能计算模拟蛋白质折叠过程,了解结构功能,对药物研发有重要意义。
    • 计算物理:计算物理利用HPC解决物理领域中的复杂问题,例如模拟天体物理现象,像恒星的形成与演化、黑洞的吸积过程等;在粒子物理中,模拟粒子碰撞实验。
    • 计算化学 :通过建立分子和原子的计算机模型,计算分子的结构、能量、反应路径等性质,帮助化学家预测化学反应的结果、设计新型化合物、研究材料的化学性能等。
  3. 商业应用

    • Web servers(网络服务器):高性能计算可以支持大规模的 Web 服务,处理大量的并发用户请求,提供快速、稳定的数据传输和访问服务,例如大型电商平台、社交网络平台等都需要高性能的 Web 服务器来保障用户的良好体验。
    • Database servers(数据库服务器) :在商业数据管理中,数据库服务器需要处理海量的数据存储、查询和更新操作。HPC 技术可以加速数据库的性能,提高数据处理的效率,支持复杂的数据分析和商业智能应用,为企业的决策提供及时、准确的数据支持。
    • Servers for data mining and decision making(数据挖掘和决策支持服务器) :企业通过高性能服务器进行数据挖掘,从大量的数据中提取有价值的信息和知识,如市场趋势、客户行为模式等,从而为企业的决策制定提供依据,帮助企业制定更有效的战略和营销计划。
  4. 计算机系统中的应用

    • Intrusion detection(入侵检测) :利用高性能计算强大的数据处理能力,实时监测网络流量和系统活动,通过复杂的算法和模型分析,及时发现潜在的入侵行为,如恶意软件攻击、黑客入侵等,保障计算机系统和网络安全。
    • Cryptography: factoring extremely large integers(密码学:超大整数分解) :在密码学中,许多加密算法的安全性基于大整数分解的困难性。高性能计算可以用于尝试分解这些超大整数,从而对密码算法的安全性进行研究和评估,推动密码学技术的发展。
    • Embedded systems(cars, tanks...)(嵌入式系统(汽车、坦克等)) :在现代汽车和军事装备等嵌入式系统中,高性能计算技术可以用于实时控制、故障诊断、智能驾驶辅助等功能。例如在汽车中,对车辆的动力系统、制动系统、安全系统等进行实时监控和控制,提高车辆的性能和安全性。

高性能计算演化

image.png