1. 高性能计算简介
1.1 高性能计算是什么
高性能计算(High Performance Computing,HPC)是一种计算技术和领域,旨在通过使用并行计算和专用硬件来实现快速、大规模和高效的计算任务。它的目标是通过利用多个处理器、多个计算节点和优化的算法,以及高速的数据传输和存储系统,提供比传统计算机更强大的计算能力和吞吐量。
高性能计算通常用于解决复杂的科学、工程和商业问题,涉及大规模数据处理、模拟仿真、数据分析和模型优化等任务。它在许多领域发挥着重要作用,如天文学、生物科学、气象学、工程设计、金融分析和药物研发等。
高性能计算的核心思想是将计算任务分解成多个子任务,并在多个处理单元(如多核处理器、图形处理器(GPU)或专用加速器)上同时执行,以显著提高计算速度和效率。并行计算、分布式计算和优化算法是实现高性能计算的关键技术。
高性能计算涉及许多方面的技术和概念,包括并行编程模型(如MPI、OpenMP和CUDA)、高性能文件系统(如Lustre和GPFS)、集群管理工具(如Slurm和PBS)以及性能分析和调优工具。它的发展受到计算硬件、网络通信、存储技术和算法优化等方面的持续进步影响。
总之,高性能计算是一种能够处理大规模和复杂计算任务的计算技术,通过利用并行计算和专用硬件来实现快速、高效和精确的计算,为科学、工程和商业领域提供强大的计算能力和数据处理能力。
1.2高性能计算历史
高性能计算的历史可以追溯到上世纪40年代的早期计算机时代,以下是一些具体年代和代表人物:
1940年代:在第二次世界大战期间,由于军事需求,早期的计算机开始应用于科学和工程计算。代表人物包括:
康威(John von Neumann):在计算机体系结构和计算理论方面做出了重要贡献,提出了冯·诺依曼体系结构的概念。
1950年代:在这个时期,计算机开始在科学和工程领域广泛应用。代表人物包括:
约翰逊(Grace Hopper):开发了第一个编译器,奠定了高级编程语言的基础。
肖克利(Seymour Cray):设计了世界上第一台超级计算机CDC 6600,被认为是高性能计算的奠基人之一。
1960年代:超级计算机的概念开始发展,并出现了更多的计算机厂商。代表人物包括:
克莱·西格尔(Gene Amdahl):设计了IBM的主要超级计算机系列,如IBM System/360和IBM System/370。
1970年代:在这个时期,计算机性能和可用性得到了显著提高。代表人物包括:
高德纳(Donald Knuth):编写了计算机科学领域的经典著作《计算机程序设计艺术》,对算法和数据结构做出了重要贡献。
1980年代:超级计算机的发展取得了重要突破,商业和科学界对高性能计算的需求不断增加。代表人物包括:
库克(Seymour Cray):设计了多台超级计算机,如Cray-1、Cray-2和Cray-3,成为超级计算机领域的重要人物。
1990年代:高性能计算开始向更广泛的领域渗透,应用范围扩大。代表人物包括:
戈登·贝尔(Gordon Bell):在超级计算机和并行计算领域做出了重要贡献,并提出了贝尔定律。
2000年代至今:随着计算机硬件技术的不断进步,高性能计算得到了广泛应用,并成为许多科学和工程领域的基础设
备。代表人物和里程碑事件包括:
安德鲁·塔威(Andrew Tanenbaum)和David J. Kuck于2006年推出了一种新的并行编程模型OpenMP,它成为广泛使用的共享内存并行编程标准。
2008年,TOP500超级计算机排行榜首次引入了图灵奖得主杰克·多斯特(Jack Dongarra)和埃里克·斯托罗姆(Erich Strohmaier)领导的全球高性能计算组织(HPCG)基准测试,该基准测试更好地反映了真实应用的性能需求。
CUDA(Compute Unified Device Architecture)于2007年由NVIDIA推出,为GPU(图形处理单元)上的并行计算提供了开发平台,引领了GPU计算的发展。
2013年,美国能源部推出了顶尖超级计算机峰值性能可达20PFLOPS(每秒浮点运算次数),名为“泰坦”,它标志着超级计算机性能的新里程碑。
2023高性能计算大会发布了最新IO500榜单,国家超级计算济南中心构建的验证性计算集群(Cheeloo-1)在10节点研究型榜单登顶夺冠,测试得分突破13万。继济南超算山河计算集群在ISC2022夺冠后,国家超级计算济南中心以超越历史最佳纪录15倍的绝对优势,再次问鼎全球。
1.3 高性能计算人尽皆知的优势
高计算能力:高性能计算系统具备强大的计算能力,能够处理大规模、复杂的计算任务。它利用并行计算和专用硬件(如多核处理器、图形处理器和加速器)来实现高速的计算操作,大大提高了计算效率和吞吐量。
大规模数据处理:高性能计算系统能够处理大规模的数据集合,包括海量数据和高维数据。它提供高速的数据传输和存储系统,能够快速读取、处理和存储大量的数据,支持复杂的数据分析、模拟和模型优化任务。
快速计算速度:高性能计算系统通过并行计算和优化算法,能够显著提高计算速度。它将计算任务分解成多个子任务,并在多个处理单元上同时执行,大大缩短了计算时间,使得原本耗时较长的任务能够迅速完成。
解决复杂问题:高性能计算系统能够处理和解决各种复杂问题,包括科学研究、工程仿真、气象预测、金融建模等。它能够进行精确的数值计算、模拟和优化,帮助科学家、工程师和决策者更好地理解和解决实际问题。
提升创新和发现:高性能计算为科学研究和工程创新提供了重要支持。它能够进行复杂的模拟实验和数据分析,帮助科学家们深入探索未知领域,加速发现和创新的过程。
加速产品开发和优化:高性能计算可以用于产品设计、工艺优化和性能评估等任务。它能够进行虚拟仿真和模拟实验,帮助企业快速验证和改进产品设计,降低开发成本和时间,并提高产品的质量和性能。
支持决策制定:高性能计算能够提供准确的数据分析和模型预测,为决策制定者提供重要的信息和指导。它可以进行大规模数据挖掘和模式识别,帮助发现隐藏的关联和趋势,为决策提供科学依据。
1.4 高性能计算的应用场景
高性能计算(High Performance Computing,HPC)在各个领域都有广泛的应用。以下是高性能计算的一些主要应用场景:
科学研究:高性能计算在物理学、化学、天文学、生物学等科学领域的研究中扮演着重要角色。它能够进行复杂的模拟和计算,帮助科学家们探索宇宙起源、物质结构、分子模拟、气候变化等领域的科学问题。
工程设计与仿真:高性能计算在工程设计和仿真中发挥着关键作用。它能够进行大规模的结构力学分析、流体力学模拟、电磁场建模等,帮助工程师优化产品设计、改进制造工艺、提高产品性能和可靠性。
气象和气候模拟:高性能计算在气象学和气候研究中被广泛应用。它能够进行大规模的数值天气预报、气候模拟和环境预测,为气象学家、气候学家和政府决策者提供重要的天气和气候信息。
药物研发和生物信息学:高性能计算在药物研发和生物信息学领域具有重要意义。它能够进行分子模拟、药物筛选、基因组分析等任务,帮助加速新药发现、疾病治疗和个性化医疗的进程。
金融和风险分析:高性能计算在金融行业中被广泛应用于风险管理、资产定价、投资组合优化等任务。它能够进行大规模的金融模型计算和数据分析,帮助金融机构制定风险管理策略和投资决策。
能源勘探和优化:高性能计算在能源领域的勘探、开发和优化中具有重要作用。它能够进行地震模拟、油气田开发优化、风电场布局优化等任务,帮助能源公司提高勘探效率、优化生产和减少环境影响。
市场预测和大数据分析:高性能计算在市场预测、大数据分析和商业智能领域扮演着重要角色。它能够处理大规模数据
1.5 高性能计算常见名词
并行计算(Parallel Computing):将计算任务分解为多个子任务,通过同时执行这些子任务来加速计算过程的技术。
分布式计算(Distributed Computing):将计算任务分发到多个计算节点或计算机集群上进行并行计算的技术。
超级计算机(Supercomputer):具备极高计算能力和存储容量的大型计算机系统,用于解决复杂的科学、工程和商业问题。
多核处理器(Multi-core Processor):在一颗芯片上集成多个处理核心的处理器,可以同时执行多个线程或任务。
加速器(Accelerator):用于加速特定计算任务的硬件设备,如图形处理器(GPU)和协处理器(如英特尔的Xeon Phi)。
高性能文件系统(High Performance File System):具有高速数据传输和存储能力,用于处理大规模数据集合的文件系统。
高性能网络(High Performance Networking):用于高速数据传输和通信的网络架构和技术,如InfiniBand、以太网等。
高性能编程模型(High Performance Programming Models):用于编写并行和并发程序的编程模型和框架,如MPI(Message Passing Interface)、OpenMP、CUDA等。
大规模并行计算(Large-scale Parallel Computing):在数千甚至数百万个计算节点上进行并行计算的技术,用于处理极大规模的计算任务。
数据并行(Data Parallelism):将数据划分为多个部分,不同处理单元对各自的数据部分进行并行计算的技术。
任务并行(Task Parallelism):将任务划分为多个独立的子任务,并分配给不同的处理单元并行执行的技术。
高性能编译器(High Performance Compiler):针对高性能计算需求进行优化的编译器,能够生成高效的机器代码。
2.2 高性能计算开发是否饱和了?
高性能计算开发领域目前并未饱和,而是在不断发展和演进。虽然高性能计算已经取得了许多重要的成就和突破,但随着科学、工程和商业领域对计算能力需求的不断增加,高性能计算的发展依然具有巨大的潜力和前景。以下是一些支持这一观点的理由:
数据爆炸和复杂性增加:随着大数据时代的到来,数据的规模和复杂性不断增加。高性能计算能够处理大规模的数据集合,并进行复杂的计算和分析,满足对数据处理能力的需求。
新兴领域的需求:随着人工智能、机器学习、深度学习等新兴技术的快速发展,对高性能计算的需求也在增加。这些领域需要大量的计算能力来训练和推理复杂的模型,高性能计算发挥着关键的作用。
模拟和建模的需求:在科学研究和工程设计中,模拟和建模是不可或缺的工具。随着科学问题和工程项目的复杂性增加,对高性能计算的需求也相应增加,以支持更准确、更精细的模拟和建模工作。
硬件和技术的进步:随着硬件技术的不断进步,包括处理器、存储器、网络等方面的创新,高性能计算的能力和效率也在不断提升。新一代的超级计算机和加速器技术为高性能计算开发提供了更强大的基础设施。
实时计算和边缘计算的需求:随着物联网、智能城市和工业自动化的发展,对实时计算和边缘计算的需求也在增加。高性能计算能够支持快速、高效的实时数据处理和决策制定,满足实时应用的要求。
2.3 高性能计算工程师发展进阶
领域专家:深入研究某个特定领域的高性能计算应用,成为该领域的专家。例如,在气候模拟领域,成为高性能计算与气候模型相结合的专家。
架构设计师:深入了解高性能计算系统的架构和设计原理,并能够设计和优化高性能计算系统的硬件和软件架构。
性能优化专家:专注于分析和优化高性能计算应用的性能,包括算法优化、并行化、内存管理等方面,以提高应用程序的效率和吞吐量。
并行编程专家:熟练掌握并行编程技术和工具,能够设计和开发高性能并行计算应用,并针对特定的硬件平台进行优化。
大数据分析专家:结合高性能计算和大数据分析技术,能够处理和分析大规模的数据集合,并从中提取有价值的信息和洞察。
高性能网络专家:专注于设计和优化高性能计算系统的网络架构,以提供高速数据传输和通信能力。
创业家和技术领导者:有志于创业或领导团队,推动高性能计算技术在特定领域或行业的创新和应用。
2.4高性能计算的就业前景
由于近两年深度学习的迅速崛起,超算互联网的普及以及AIGC的大规模应用,各行各业对高性能计算工程师的需求大涨,因此高性能计算工程师的工资也在逐年上涨中,并频频爆发抢人大战。
甚至年薪百万依然难以招到合适的人才。
有很多大厂公司,例如京东、百度、阿里都在急需高性能计算工程师,芯片类企业如飞腾、景嘉微等更不用说。据职友集统计数据显示,高性能计算工程师工资范围在30-200K之间,其中薪资在薪资在30-50K的范围内占比51.2%,薪资在50-100K之间的范围内占比23%。
以下是一些国内高性能计算相关岗位的公司和薪资待遇:
阿里巴巴:20-70k 元/月;腾讯:20-80k 元/月;华为:20-100k元/月;百度:15-50k元/月;中科院计算所:50-120k元/月;普元信息:12-25k 元/月;联想集团:15-50k 元/月;中国科学院:45-100k 元/月;
按照工作年限进行划分
下图中按照1年以下、1-3年、3-5年、5年以上、平均等维度进行了统计、对比:
工作年限在1年以下,月薪在20K左右;
工作年限在1-3年左右,月薪在25K左右;
工作年限在3-5年左右,月薪在35K左右;
工作年限在5年以上,月薪在50K左右;
平均月薪在30K左右。
按照学历进行划分
从学历来看,本科学历,高性能计算工程师月薪在24K左右;本科及以上学历,月薪在35-50K左右。
按照地域进行划分
下图对北京、上海、广州、深圳、杭州五个大型城市的平均薪资进行了对比:
该数据来源于猎豹网站
其中北京地区平均工资在39k左右;
上海地区平均工资在32k左右;
广州地区平均工资在20k左右;
深圳地区平均工资在31k左右;
杭州地区平均工资在20k左右。
高性能计算工程师岗位要求
精通高性能计算工程师相关技术和实践经验,熟悉使用MPI、Openmp、CUDA等并行编程技术;并且具有良好的设计能力和实践经验。