高性能计算概要
高性能计算(High Performance Computing, HPC)在AI浪潮下越来越火热,那么究竟什么是HPC?在Prof Jiang的课上我们一探究竟。
HPC的关键是并行处理(Parallel Processing),一般来说我们会把程序跑到超级计算机或者集群上,来加速我们当前的代码。如何高效的利用集群节点就是我们高性能计算主要解决的问题。
下面一个公式:
指的是一个单个的计算节点;
指的是计算节点和数据中心之间的计算和通信.
如何高效利用这些计算资源呢?主要有两种方式:分区(Partitioning)和拷贝(Duplication)
Full-Stack HPC on Compute Nodes
计算节点上的全栈HPC指的是什么呢?实际上是一套从上到下的高性能方案。探索所有软硬件的并行性。从上到下依次为:
| 层级 | 对象 | 对应方案 |
|---|---|---|
| Level6 | User | Executable tablePrograms |
| Level5 | High-Level Language | C++, Java, MPI, OpenMP, etc |
| Level4 | Assembly Language | Assembly Code |
| Level3 | System Software | OS, Library Code |
| Level2 | Machine | ISA |
| Level1 | Control | Microcode or Hardwired |
| Level0 | Digital Logic | Circuts, 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)
计算思维是一种心智技能,要求我们将计算机科学中的概念、方法、问题应用到各个领域当中。它有些类似于数据科学,计算思维无处不在,难以用单一的定义涵盖其所有的应用场景,因为它几乎融入到了所有的技术领域。
计算思维有四个核心的特征
- 分解(Decomposition): 将复杂问题或系统拆分成为更小、更容易处理的部分
- 模式识别或者数据表示(Pattern Recognition/Data Representation): 发现数据或者问题的规律,并且将其转换为计算机可以处理的形式。
- 概括和抽象(Generalization/Abstraction)" 提取问题的核心逻辑,忽略细节,形成通用解决方案。
- 算法(Algorithms): 设计一系列明确的步骤或规则来解决问题。
那么我们如何将计算思维应用起来呢?
这张图展示了计算思维的三个关键步骤: 抽象(Abstraction)+ 自动化(Automation)+分析(Analysis)
HPC Applications
HPC有诸多应用,下面是一些例子。
-
工程与设计中的应用
- 翼型设计:在航空航天领域,通过高性能计算来模拟空气在翼型周围流动的情况,分析不同形状翼型的升力、阻力等性能,从而优化设计,提高飞行器的性能和效率。
- 内燃机设计:利用HPC模拟内燃机内部的燃烧过程、空气流动、热量传递等复杂的物理现象,帮助工程师优化燃烧室形状、进气和排气系统设计等,以提高发动机的动力输出,燃油经济并且降低排放。
- 高速电路设计:在电子领域,HPC可以用于分析高速电路中信号的完整性,电磁干扰等问题,通过模拟电路的电气特性,优化电路布局布线,确保高速电路的可靠性和稳定性。
- CAD/CAM:在工程设计和制造过程中,CAD/CAM软件依赖高性能计算来进行复杂的模型创建、仿真分析和数控加工编程等任务,提高产品设计和制造的精度和效率。
-
科学应用
- 生物信息学:在生物信息学中,HPC用于分析和处理大量生物数据,如DNA序列匹配,通过对比不同生物的基因序列,寻找相似性研究生物进化和遗传疾病等;还有蛋白质折叠问题,利用高性能计算模拟蛋白质折叠过程,了解结构功能,对药物研发有重要意义。
- 计算物理:计算物理利用HPC解决物理领域中的复杂问题,例如模拟天体物理现象,像恒星的形成与演化、黑洞的吸积过程等;在粒子物理中,模拟粒子碰撞实验。
- 计算化学 :通过建立分子和原子的计算机模型,计算分子的结构、能量、反应路径等性质,帮助化学家预测化学反应的结果、设计新型化合物、研究材料的化学性能等。
-
商业应用
- Web servers(网络服务器):高性能计算可以支持大规模的 Web 服务,处理大量的并发用户请求,提供快速、稳定的数据传输和访问服务,例如大型电商平台、社交网络平台等都需要高性能的 Web 服务器来保障用户的良好体验。
- Database servers(数据库服务器) :在商业数据管理中,数据库服务器需要处理海量的数据存储、查询和更新操作。HPC 技术可以加速数据库的性能,提高数据处理的效率,支持复杂的数据分析和商业智能应用,为企业的决策提供及时、准确的数据支持。
- Servers for data mining and decision making(数据挖掘和决策支持服务器) :企业通过高性能服务器进行数据挖掘,从大量的数据中提取有价值的信息和知识,如市场趋势、客户行为模式等,从而为企业的决策制定提供依据,帮助企业制定更有效的战略和营销计划。
-
计算机系统中的应用
- Intrusion detection(入侵检测) :利用高性能计算强大的数据处理能力,实时监测网络流量和系统活动,通过复杂的算法和模型分析,及时发现潜在的入侵行为,如恶意软件攻击、黑客入侵等,保障计算机系统和网络安全。
- Cryptography: factoring extremely large integers(密码学:超大整数分解) :在密码学中,许多加密算法的安全性基于大整数分解的困难性。高性能计算可以用于尝试分解这些超大整数,从而对密码算法的安全性进行研究和评估,推动密码学技术的发展。
- Embedded systems(cars, tanks...)(嵌入式系统(汽车、坦克等)) :在现代汽车和军事装备等嵌入式系统中,高性能计算技术可以用于实时控制、故障诊断、智能驾驶辅助等功能。例如在汽车中,对车辆的动力系统、制动系统、安全系统等进行实时监控和控制,提高车辆的性能和安全性。