Qq
作者Qq联盟成员·2024-04-23 11:15
工程师·红宇精密

制造行业HPC平台性能调优方案(同业交流共识总结)

字数 5265阅读 1508评论 3赞 1

一、导语

随着半导体行业的高速发展,芯片工艺及制程越来越精密,模拟仿真已经成为半导体企业在进行目标系统设计时,为满足功能、性能、功耗和其他指标要求所需要的一项重要业务流程。由于实际系统的复杂度、精细度的快速提升,要进行模拟仿真的需求的不断增长,以及效率要求的提升,模拟仿真对于算力基础设施提出了苛刻的要求,对仿真、模拟、测试等方面的工作面临巨大的算力瓶颈。

本期线上同行交流 twt 社区特别邀请多位制造企业技术专家一同参与线上的交流探讨,本期重点从 “ 制造企业可以通过哪些方式优化 HPC 的性能? ” 、 “ 汽车制造不同品牌不同型号不同时期采购的服务器,如何进行统一调度? ” 、 “ 怎么考虑采用更高速的网络互联、故障检测机制、作业调度策略等方式提升吞吐和效率? ” 三个方面交流主题进行总结。

主稿嘉宾:杨承龙 某机械制造企业 资深工程师
互动嘉宾:
陈强 某大型汽车制造企业 架构师&技术经理
李瑞雄 某大型汽车制造企业 集团流程与数字化部IT共享服务中心高级经理
陈毅 某制造企业 HPC负责人
宗磊 某大型制造企业 IT资深运维专家

二、议题研讨内容

( 1 )制造企业可以通过哪些方式优化 HPC 的性能?

嘉宾: lrx00056015 福田汽车 IT运维主管
优化方案很多,业务方面软件模型及工况优化 ,软件层面可以软件及指令集优化、 mpi 参数优化、数据结构优化等,硬件层面更换先进的处理器、引入 GPU 加速、内存调用优化、网络优化及存储优化,优化后可以提升计算速度和效率,好的情况可以提升 1 倍 - 几倍。具体可以从如下几个方面开展:

  1. 基础优化:灵活运用基础优化技术,如算法优化、数据结构优化等,提高算法的效率和性能。
  2. 并行计算技术 :将计算任务分解为多个子任务并在多个处理器上并行执行,可以显著提升计算速。
  3. 使用先进的处理器 :采用集成最新创新的处理器,提升 HPC 工作负载的运行速度。
  4. GPU 加速:利用 GPU 加速的数学库和经过优化的通信库,可以更大限度地提升常用 HPC 算法的性能。此外, Nvidia HPC SDK 支持基于标准的多 GPU 和可扩展的系统编程,有助于简化 HPC 应用的移植和优化流程 。
  5. 性能监控与剖析 :使用性能监控与剖析平台,如 E-HPC 优化器,支持集群性能指标、查看集群性能历史记录、分析进程级的性能热点,从而根据展示的性能大盘及性能数据进行优化 。
  6. 软件工具和技术 :利用高性能计算软件和工具,如英特尔提供的通用框架、编译器、性能库和并行模型,可以帮助开发人员更轻松地跨节点和平台进行应用程序开发和优化 。
  7. 网络通信优化 :选用高吞吐、低延迟、稳定的网络提高节点间高速通信的能力。
  8. 缓存系统性能优化 :充分发挥新型存储器件性能优势、设计高效的缓存系统,提升读写带宽和 IOPS 。
  9. 云解决方案 :在数据中心混合云环境中,利用 HPC 工具帮助协调、可视化、优化和分析超繁重的工作负载,消除 I/O 瓶颈。

嘉宾:rayz 某大型制造企业 IT经理
优化 HPC 环境的性能除了上述的方法,以下方面也可以对 HPC 进行一些优化。

  1. 内存管理优化,对于内存的管理对于集群也很重要的,包括减少内存分配和释放的次数、使用内存池技术、优化数据结构的内存占用等。通过有效管理内存,可以避免内存碎片化和过多的内存操作,提高性能。
  2. 预处理和后处理优化,在仿真测试中,预处理和后处理阶段通常占据很大一部分时间。优化预处理和后处理过程,可以减少数据准备和结果处理的时间开销。包括减少输入数据的处理和转换时间、优化数据存储和读取、并行化后处理过程等。
  3. 缓存优化,合理利用缓存对于提高性能也很重要的,包括考虑数据访问的局部性、缓存友好的数据结构设计、循环展开和向量化等技术。通过减少缓存缺失,可以减少内存访问的延迟,提高计算速度。

嘉宾:强哥之神 上汽云计算中心 架构师&技术经理
要提高仿真测试的速度,首先要从程序角度优化,比如采用多线程,还可以采用 MPI 、 OpenMP 、 CUDA 等并行编程技术,实现并行化计算。
还可以从硬件角度,从网络与存储方面,比如使用高性能网络如 InfiniBand 。比如采用高性能存储,目前用 NVMe 的比较多,可以加快数据读写速度,缩短仿真任务的启动和执行时间。

下面推荐一些我们使用到的技术手段,刚好在这里做个总结,供参考:

1.并行计算优化:

  • 利用并行计算技术,如多线程、多进程、分布式计算等,将任务分解成多个子任务,并同时执行,以提高计算效率。
  • 优化任务的并行度和负载均衡,确保各个计算节点的负载平衡,避免资源浪费和性能瓶颈。

2.算法和模型优化:

  • 优化算法和模型设计,减少计算复杂度和内存占用,提高计算效率。
  • 利用高性能计算库和优化工具,如 Intel MKL 、 CUDA 等,加速数值计算和图形处理任务。

3.硬件优化:

  • 选择高性能的硬件平台,如 GPU 加速器、专用加速卡等,提高计算速度和效率。
  • 优化硬件架构和配置,包括 CPU 、内存、存储等组件的选择和配置,以满足计算任务的需求。

4.存储优化:

  • 采用高速存储设备,如 SSD 、 NVMe 存储等,加速数据读写操作,降低 I/O 延迟。
  • 使用分布式存储系统,如 Hadoop 、 Ceph 等,提高存储容量和可扩展性,同时保持良好的性能。

5.软件和工具优化:

  • 使用高性能计算软件和工具,如 MPI 、 OpenMP 等,实现并行计算和任务调度。
  • 优化应用程序和工作流程,利用软件性能分析工具,如 Intel VTune 、 CUDA Profiler 等,发现和解决性能瓶颈。

6.网络优化:

  • 使用高性能网络设备和技术,如 InfiniBand 、 RDMA 等,加速数据传输和通信速度。

7.任务调度和资源管理:

  • 使用高效的任务调度系统,如 Slurm 、 PBS 等,合理分配和管理计算资源,确保任务的及时执行和完成。
  • 考虑任务的优先级和依赖关系,进行合理的任务调度和资源分配,最大化利用计算资源。

( 2 )汽车制造不同品牌不同型号不同时期采购的服务器,如何进行统一调度?

嘉宾: mxin
要实现不同品牌、不同型号、不同时期采购的服务器的统一调度,可以考虑以下几种解决方案:

  1. 使用兼容的中间层软件:寻找或开发一个中间层软件,该软件能够作为不同 PBS 调度系统之间的桥梁,实现资源的统一管理和调度。这个中间层软件需要能够与各个品牌的 PBS 调度系统进行有效的通信和交互。
  2. 标准化作业脚本:制定一套标准化的作业提交脚本,使得无论底层服务器是什么品牌或型号,作业都可以通过统一的脚本提交。这样可以减少不同系统间的差异性,简化调度流程。
  3. 虚拟化技术:利用虚拟化技术将物理服务器资源虚拟化,形成一个统一的资源池。这样,不同的物理服务器就可以被统一管理和调度,而不受品牌或型号的限制。
  4. 容器化部署:采用容器技术,如 Docker 或 Kubernetes ,将应用程序和其依赖打包成容器,在不同的服务器上运行。这种方法可以提高应用程序的可移植性和一致性,简化调度过程。
  5. 定制开发调度系统:如果现有的 PBS 调度系统无法满足需求,可以考虑与专业的软件开发团队合作,定制开发一个能够满足特定需求的调度系统。
  6. 硬件升级与替换:在长远考虑中,如果预算允许,可以逐步升级或替换老旧的服务器硬件,以减少品牌和型号的多样性,从而更容易实现统一调度。
  7. 专业咨询与培训:寻求专业的 IT 咨询公司或专家的帮助,他们可能会提供更专业的建议和技术支持。同时,对内部员工进行相关的技术培训,提升团队对于复杂 IT 环境的管理能力。
  8. 建立标准化采购流程:为了未来的可持续发展,建议建立一个更加标准化的服务器采购流程,尽量选择兼容性好、支持统一管理平台的品牌和型号。
  9. 供应商合作:与服务器供应商合作,探讨是否有可能提供跨品牌、跨型号的统一调度解决方案或服务。
  10. 集中管理平台:投资建设或升级集中的管理平台,使其能够支持更多类型的服务器和调度系统,实现资源的集中监控和管理。

( 3 )怎么考虑采用更高速的网络互联、故障检测机制、作业调度策略等方式提升吞吐和效率

嘉宾:lrx00056015 福田汽车 IT运维主管
HPC 可能产生瓶颈的地方很多,包括 CPU ,内存,本地磁盘,网络存储,计算网络,操作系统等,通过 PBS 可以进行相关资源的使用和调用监控,了解当前和历史状态,进行优化。具体优化可以从以下四个方面开始:

  1. 采用更高速的网络互联: 选用高带宽的 InfiniBand 网络如 200G ,实现大量数据的并行处理,提升 HPC 网络环境的运行效率和性能表现 。
  2. 采用高可用性存储系统:选择具备自动故障检测与快速恢复重建能力的高可用性存储系统,提高数据重构的速度和系统的可用性。
  3. 优化作业调度策略:合理的作业调度策略可以显著提升 HPC 系统的吞吐和效率。基于用户定义的组织结构树来实现作业的优先级动态计算,有助于实现更加公平和高效的资源分配
  4. 完善故障检测机制:完善故障检测和自动恢复机制,实现作业执行的失败检测和失败作业的自动重新提交,减少对系统的影响。

嘉宾: rayz 某大型制造企业 IT经理
HPC 集群的调优,除了使用 infiniband 高速网络,集群调度策略外,也可以从其他方面进行优化,如:集群高可用架构的设计,做好故障检测和冗余设计,自动恢复等一些高可用的机制;采用并行文件系统,如 GPFS , GFS 等,提高 IO 速度等;对 OS 内核进行调优,调整内核参数、优化中断处理、减少上下文切换、 TCP/IP 网络参数调整等;利用 GPU 进行加速运算,可以显著提高计算密集型应用程序的性能。也可以采用内存分配和释放的策略,以减少内存碎片和优化内存利用率。使用内存层次结构优化技术,如使用高速缓存、使用非易失性内存等。使用 GPU 编程模型,如 CUDA 、 OpenCL 等,将计算任务转移到 GPU 上进行并行计算。

嘉宾:强哥之神 上汽云计算中心 架构师&技术经理
1 、网络方面,是很关键的,我们是采用 InfiniBand ,这样可以加速数据传输和通信,降低通信延迟。当然你也可以在硬件层使用 RDMA 结构,降低 CPU 负载和网络传输延迟 。
2 、故障检测机制方面,上层 HPC 系统可以通过监控系统、日志系统,利用 K8S 集群的特性进行。设置调度资源使用率监控、设置状态检测,比如 livness probe, readiness probe 等机制。
3 、作业调度策略方面,如果是使用的 K8S ,则可以打些标签,定义一下 priority 权重,确保高优先级任务能够及时得到执行,而低优先级任务则在资源充裕时执行,以最大化集群资源的利用率。目前 HPC 有一般有着高效的作业调度系统,如 Slurm 、 PBS Pro 、 Grid Engine 等,我们就是用的 PBS Pro ,可根据任务的特性和优先级进行合理调度。

三、议题共识综述

经过综合专家观点,性能优化是一个综合性的工作,需要综合考虑硬件、软件、算法模型等多因素。通过调整系统参数和优化系统设置,可以大幅缩短仿真测试的时间,提高仿真效率和产品质量,最终实现,实现资源利用合理化、计算效率最大化。。
( 1 )硬件调优

  • 网络通信优化 :选用高吞吐、低延迟、稳定的网络提高节点间高速通信的能力。
  • 硬件架构和配置:包括 CPU 、 GPU 等组件的选择和配置,采用集成最新创新的处理器,提升 HPC 工作负载的运行速度,以满足计算任务的需求。
  • 采用并行计算:并行计算可以将计算任务分解成多个子任务,同时进行计算,从而提高计算速度。可以使用 MPI 、 OpenMP 等并行计算技术来优化计算性能。
  • 存储优化:使用分布式存储系统,如 Hadoop 、 Ceph 等,提高存储容量和可扩展性,同时保持良好的性能,
    ( 2 )软件优化
  • 优化代码:对于大规模的仿真测试,优化代码可以显著提高计算速度。可以通过使用高效的算法、减少内存使用、减少 I/O 操作等方式来优化代码。
  • 优化应用程序和工作流程:利用软件性能分析工具,如 Intel VTune 、 CUDA Profiler 等,发现和解决性能瓶颈。
  • 任务调度和资源管理:使用高效的任务调度系统,如 Slurm 、 PBS 等,合理分配和管理计算资源,确保任务的及时执行,考虑任务的优先级和依赖关系,进行合理的任务调度和资源分配,最大化利用计算资源。
    ( 3 )算法模型优化
  • 优化算法和模型设计,减少计算复杂度和内存占用,提高计算效率。
  • 利用高性能计算库和优化工具,如 Intel MKL 、 CUDA 等,加速数值计算和图形处理任务。
  • 预处理和后处理优化,在仿真测试中,预处理和后处理阶段通常占据很大一部分时间。优化预处理和后处理过程,可以减少数据准备和结果处理的时间开销。包括减少输入数据的处理和转换时间、优化数据存储和读取、并行化后处理过程等。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论3 条评论

yfgtadminyfgtadmin联盟成员zkzk
2024-04-26 11:49
分享内容确实干货满满,非常赞同三大优化方向,三大优化方向实施起来对人员技术水平要求还是非常高的,实施的时间跨度可能也很长,希望专家提供一些建设原则和实施经验,在平台建设之初就避免一些问题。
zbjjyyzbjjyy运维Se
2024-04-24 09:18
分享内容对于刚入门的新手来说,已经足够消化一段时间了,偏干货分享。 后续的优化方向,赞同楼上老师提到的,如果能结合具体案例说丰富一下调优的具体内容就完美了
一一一一IT产品高级经理制造业
2024-04-23 13:10
若针对三大优化方向每个方向展开,并提供具体优化案例讲解就更好了
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广