Hello, HPC!

Mr.Haoz大约 9 分钟

简介

在当今科技时代,高性能计算(HPC)系统已经成为科学、工程、医学等领域中必不可少的工具。HPC系统具有高速计算和存储能力,能够加速各种复杂问题的求解,例如气候模拟、基因组学、物理学、工程设计等。

提起HPC,其实有一个名称更为我们所熟知,那就是 “超级计算机”,简称“超算”。“超级计算”(supercomputing)这名词第一次出现,是在1929年《纽约世界报》关于IBM为哥伦比亚大学建造大型报表机(tabulator)的报道。到如今,超算相关的技术和应用都有了长足的发展。HPC简而言之就是如今超算相关技术的应用。

基本概念

高性能计算(HPC)是指使用多台计算机、服务器或节点并行运算的方式,以实现高速计算的计算机系统。HPC系统具有强大的计算能力、高速的数据存取能力和高效的数据管理能力。HPC系统通常由多个处理器和存储设备组成,并使用高速网络连接各个部分。

HPC对系统的处理器、内存带宽、运算方式、系统I/O、存储等方面的要求都十分高,这其中的每一个环节都将直接影响到整个系统的运算速度,都可能成为瓶颈。所以,这是一门综合型应用的技术。

HPC系统的基本组成

HPC系统通常由以下几个组成部分组成:

  • 处理器
    HPC系统使用多个处理器来处理任务。每个处理器都有自己的内存和计算资源。在HPC系统中,处理器通常被组织成多个节点,每个节点可以包含多个处理器。

  • 存储器
    HPC系统需要大量存储器来存储数据和程序。存储器通常被组织成分布式并行文件系统,以便在多个节点之间共享数据。

  • 网络
    HPC系统使用高速网络连接各个节点。这些网络通常比普通网络快得多,以便在多个节点之间传输数据和协调任务。

  • 软件
    HPC系统需要特殊的软件来管理和协调多个节点的计算任务。这些软件包括作业调度程序、并行编程库、性能分析工具,以及各类计算应用软件等等。

应用场景

HPC系统在科学、工程和商业等领域都有广泛的应用。以下是一些常见的应用场景:

  • 天气预报和气候模拟
  • 生物医学研究和基因组学
  • 物理学和天文学
  • 能源和环境领域
  • 工程设计和仿真
  • 金融和商业分析

随着时代的发展,一些行业应用和知识的普及。越来越多的行业开始使用计算机仿真、模拟的手段来进行实验和分析。相比现实环境制作原型产品,进行相关物理实验。使用计算机仿真没有了大量现实条件因素的制约,大量减少现实中原型产品的试验,缩短了研发周期,更是节约了研究经费。

然而通过计算机做仿真实验,对计算机也有着一些要求。一些小实验,使用工程师的个人工作站(配置较高的电脑),完全也是可以满足的。甚至比在超算上运行速度还要快,这是因为个人工作站的CPU主频一般都比较高,比超算的单颗CPU主频都要高,但使用工作站的方式限制还是比较大的,一个是配置有限,一次只能运行一个计算任务。另一方面,一旦工作站运行计算任务后,工程师可能就基本无法使用工作站去做其他事情了。而比较大的实验,使用工作站可能要持续运行几天,几周甚至是几个月。这种情况使用工作站问题就比较大了,能一直稳定运行到出结果还好。但如果电源、操作系统或是程序本身出现问题就比较让人崩溃。不好意思,从头再来吧! 这种情况工作站显然是无法满足的,这就需要我们用到HPC了。

那么,使用HPC又会有什么不一样呢? 让我们来一起看看使用HPC集群的情况:

首先,计算任务交给HPC集群来运行,不会影响本地工作站的使用,解放了工程师的电脑。
其次,将HPC资源一般放在数据中心,由外界环境造成问题的几率非常小,基本不会出现断电情况。
再次,HPC计算节点操作系统一般都使用Linux,比较稳定,不会出现Windows系统可能蓝屏的问题。
再次,也是最重要的,我们可以通过并行计算来实现计算的加速,用资源换时间,这将可以大幅度的缩减一个任务的计算时间。
最后,通过HPC可以实现多用户、多任务同时运行,队列机制,任务调度等来实现对任务和资源的管理和分配,提升效率。

常用HPC系统

常用的HPC系统包括:

  • 超级计算机:这是世界上最快的计算机,通常由数千台处理器组成。
  • 集群:这是一组相互连接的计算机,它们可以一起运行程序,以实现高速计算。
  • GPU加速器:这是一种使用图形处理器(GPU)和CPU结合加速计算的方法,能够大幅提升计算速度。
  • 分布式计算:这是一种计算方式,它通过网络连接多个计算机,以实现高速计算。

性能指标

就像是我们选配电脑或者智能手机一样,我们大多数讨论HPC硬件的时候,关注重点依然是计算能力,那么怎么衡量HPC集群的性能指标呢?

在世界超算排名方面,TOP500排名是基于HPL测试。
HPL(The High-Performance Linpack Benchmark)是测试高性能计算集群系统浮点性能的基准程序。 HPL通过对高性能计算集群采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算集群的浮点计算能力。
浮点计算峰值是指计算机每秒可以完成的浮点计算次数,包括理论浮点峰值和实测浮点峰值。
理论浮点峰值=CPU主频×CPU核数×CPU每周期执行浮点运算的次数
衡量HPC集群浮点计算能力的单位为 flops(floating-point operations per second)。

常见单位换算:

1Mflops(megaflops) =10^6 每秒一百万 次的浮点运算
1Gflops(gigaflops) =10^9 每秒十亿 次的浮点运算
1Tflops(teraflops) =10^12 每秒一万亿 次的浮点运算(1太拉)
1Pflops(petaflops) =10^15 每秒一千万亿 次的浮点运算
1Eflops(exaflops) =10^18 每秒一百亿亿 次的浮点运算
1Zflops(zettaflops)=10^21 每秒十万亿亿 次的浮点运算

我们现在经常听说的E级超算就是指浮点运算性能能达到 1Eflops 以上的超算。

虽然,HPL测试基本可以得到HPC的浮点性能,但根据应用方向的不同,我们对性能要求的方面也是有所侧重的,HPL也只能代表性能一个方面。还有更多性能测试标准。如:

  • 定点性能 SPECint95
  • 浮点性能 SPECfp95,SPECfp_rate95
  • Web服务性能 SPECweb96,SPECweb99
  • 数据处理性能 TPC
  • 系统软件性能 Lmbench,Netperf
  • ······

目前还没有一个标准能够反映计算机系统的全部性能,它们代表的都只是性能的一个侧面。但无论多少测试标准,这并不一定能够体现我们在实际使用过程中的性能或是效率情况。毕竟,我们建设HPC集群不是用来跑测试的。

所以,HPC集群从建设到使用,再到达到一种效率较高、稳定并且好用的状态,也是需要一段不短的时间。

而实际建设HPC时,我们可能也更关心

  • 用什么CPU
  • 需要多少节点、多少核
  • 能否比本地节省时间,能够节省多少时间
  • 能够同时支持多少作业运行
  • ······

毕竟,适合自己的才是最好的。

如何开始学习和使用HPC系统

对于新手来说,学习和使用HPC系统可能会有一些挑战。以下是一些入门HPC系统的建议:

  • 了解HPC系统的基本概念:学习HPC系统的基本概念、体系结构和工作原理,可以帮助您更好地理解HPC系统的使用。
  • 选择合适的HPC系统:根据您的需求选择合适的HPC系统,尝试用虚拟机去构建它。
  • 学习如何提交作业:提交作业是使用HPC系统的关键步骤。了解如何提交作业、如何选择计算资源和如何管理作业等方面的知识,可以帮助您更好地利用HPC系统。
  • 学习并行计算:HPC系统最大的特点就是并行计算,因此学习如何进行并行计算,包括使用MPI、OpenMP、CUDA等并行计算库,可以让您更好地利用HPC系统的计算能力。
  • 掌握编程技能:HPC系统通常使用编程语言来编写和运行程序,因此学习编程技能对于入门HPC系统至关重要。常用的编程语言包括C/C++、Python、Fortran等。
  • 参加培训和课程:一些大学、研究机构和超算中心会提供HPC系统的培训、课程和相关资料,这是学习和使用HPC系统的好机会。有条件您可以参加这些培训和课程,以提高自己的技能水平。
  • 收藏关注本站:本站是一个可以帮助您学习和了解HPC系统的好地方。您可以扫描右边的二维码加入HPC技术交流群,参与讨论、分享经验和交流技术。
上次编辑于:
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.7

回到顶部