0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鲲鹏GCC编译器具有代表性的三方面优化特性

7riU_gh_3a181fa 来源:华为计算 作者:华为计算 2021-09-02 10:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

编译器作为重要的基础软件之一,在各个领域都有着非常广泛的应用。比如在嵌入式领域,如何在有限的空间内丰富应用的功能困扰着众多的工程师,编译器能够辅助大幅度地降低应用的体积,是工程师们不可或缺的好帮手。

再或是 HPC(High Performance Computing,高性能计算)领域聚焦于计算密集型的场景,像气象预报、科学研究等,极致化的应用性能是 HPC 领域不断探索的课题之一,编译器作为重要的性能贡献者,在其中发挥着至关重要的作用。

鲲鹏 GCC 是搭载在鲲鹏平台上的高性能编译器,致力于为用户提供高效的性能体验,在编译算法、指令流水、运算库等方面进行了深度的优化。

了解鲲鹏 GCC 编译器

鲲鹏 GCC 编译器是基于开源 GCC 的高性能编译器,鲲鹏 GCC 与鲲鹏芯片协同,通过编译器技术充分发挥芯片的性能,提升鲲鹏硬件平台上业务的性能体验。除支持开源 GCC 通用功能之外,鲲鹏 GCC 主要对以下三个方面进行了增强。

更丰富的编译算法:提供丰富的优化算法,如内存布局优化、结构体拆分优化、自动矢量化等,大幅提升指令和数据的吞吐量。

更灵活的指令流水:适配鲲鹏平台的指令流水优化,发挥鲲鹏架构极致算力。

更高效的运算库:深度优化数学库算法,提供丰富的矢量数学函数接口,大幅提升数学计算的效率。

当前鲲鹏 GCC 编译器已广泛应用于多种 HPC 典型场景,如气象、安防、流体力学等,性能优势已经逐步展露。其中,SPECCPU 2006 和 SPECCPU 2017 benchmark 跑分平均优于开源 GCC 15% 以上,HPC 典型气象应用 WRF 优于开源 GCC 10% 以上。

GCC 编译器典型优化场景及其优化原理介绍

结构体拆分优化——大幅提升 Cache 命中率

SPECCPU 2006 benchmark 中有一款 libquantum 子项,它用于模拟量子计算机运行整数分解的 Shor 算法,该子项的一个瓶颈在于频繁连续的内存读写,简化后的代码示例如下图左边所示。

dd98c7bc-0b48-11ec-8fb8-12bb97331649.png

内存布局优化原理示意图

从循环中可以看出在结构体 node_t 中,data1 的使用率极高,而 data2 是不使用的。在源代码中,数据是以结构体数组的形式排布在内存中,按照普通编译器的编译方式,每次从内存中取数据时会将连续几个结构体数据加载到 cache 中,而 cache 包含的数据中有一半将不会参与运算,这会造成 cache 空间和带宽的浪费与性能的损耗。

鲲鹏 GCC 编译器会自动检查循环中适合优化的场景,通过将结构体拆分成两个结构体的方式(如上图右),将有效的数据紧凑排布起来,从而提高 cache 命中率和应用性能。经测试,此优化可以给 libquantum 子项带来80%的性能提升。除此之外,鲲鹏 GCC 编译器还支持结构体全展开、结构体成员重排列等内存布局优化,让应用程序的性能如虎添翼。

指令流水优化——更加适合鲲鹏的指令调度模型

通用的指令流水调度是基于各个指令的消耗和指令间的依赖关系合理地调度指令执行的顺序。在不进行指令流水优化时,6条指令依次顺序执行,假设每条指令需要两个单位的执行时间来计算得到结果,由于指令间存在数据依赖,在没有计算得到 V1 值的条件下,无法进行 V0 值的计算,由此导致了一个单位时间的等待,造成性能损失。

在使用指令流水优化后,在 V 系列指令执行等待的一个单位时间内加入了没有数据依赖的K系列指令的执行,所有指令的执行被合理地调度了起来,指令流水优化提升了指令执行的效率和程序运行的性能。

鲲鹏芯片基于 ARM 架构,对指令的消耗和指令间依赖关系的处理进行了优化和增强。鲲鹏 GCC 编译器导入了基于鲲鹏芯片的指令模型,使得指令流水优化的结果能够更加适合鲲鹏芯片的执行,提升鲲鹏软件运行的性能。经测试,该优化可以给 SPEC CPU 2006benchmark 带来2%的整体性能提升。

高性能运算库——极致性能的数学库和矢量数学函数

HPC 领域会运用到大量的数学函数计算,如 pow、sinf、log 等,也经常需要对整个数组内的数据做数学函数运算。如下图举例所示,左边是需要对 a 数组的所有数据进行 sinf 数学计算。

正常情况下会循环遍历 a 数组依次对每个数据进行 sinf 数学计算,无法获得进一步的性能提升空间。鲲鹏 GCC 编译器能够识别该场景,自动将 sinf 数学函数的调用转化为矢量化 vec_sinf 的数学调用,能够同时处理四个数据的 sinf 数学计算,并矢量化存取数据,得到性能的提升。经测试,该优化可以给 HPC 领域 NEMO 应用带来6%的性能提升。

ddd81796-0b48-11ec-8fb8-12bb97331649.png

矢量数学函数优化原理示意图

本文我们主要介绍了鲲鹏 GCC 编译器具有代表性的三方面优化特性:前中端编译算法优化、后端指令优化、运行时库优化。除此之外,还有软件预取、循环优化、分支预测、矢量化等编译优化特性的开发应用。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    463

    文章

    54704

    浏览量

    471359
  • GCC
    GCC
    +关注

    关注

    0

    文章

    112

    浏览量

    26452
  • 编译器
    +关注

    关注

    1

    文章

    1673

    浏览量

    52110
  • HPC
    HPC
    +关注

    关注

    0

    文章

    351

    浏览量

    25120

原文标题:【鲲鹏 DevKit 黑科技揭秘】┃鲲鹏GCC编译器,释放鲲鹏澎湃算力

文章出处:【微信号:gh_3a181fa836b6,微信公众号:华为计算】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    谷景绕线共模电感技术特性与应用解析

    在电子设备向高频化、小型化发展的当下,电磁兼容设计成为电路稳定运行的关键环节。作为抑制电磁干扰的重要元件,绕线共模电感凭借其结构特点与滤波性能,在电源系统、通信设备及消费电子等领域发挥着重要作用。本文将从技术原理、结构优势及实际应用三方面,介绍该元件如何助力提升系统的电磁兼容
    的头像 发表于 04-07 16:37 229次阅读

    高速精密加工的性能标杆

    在高端精密制造领域,电主轴作为核心功能部件,其性能直接决定了加工设备的精度、效率与适用场景。内装式相交流异步感应电主轴,凭借紧凑结构、高速特性与宽适配,成为铣削、钻孔等精密加工场景的理想选择,以下从技术参数、性能特点、应用适
    的头像 发表于 12-20 14:26 3398次阅读
    高速精密加工的性能标杆

    单片机开发功能安全中编译器

    的问题是,防御编码和外部数据访问等实践并不属于编译器认可的领域。例如,C和C ++都没有为内存损坏留出任何余地,因此,除非在没有这种损坏的情况下可以访问旨在防止内存损坏的代码,否则在对代码进行优化
    发表于 12-01 06:44

    高校宿舍水电计费・智能管理・能效优化一体化系统

    个重要方面,一是安全管理工作,二是水电计量和收费工作,是节能降耗。对高校宿舍水电管理的现状及针对以上三方面存在问题进行探讨,并针对这三方面摸索行之有效的对策,对于高校宿舍水电管理
    的头像 发表于 11-13 14:25 441次阅读
    高校宿舍水电计费・智能管理・能效<b class='flag-5'>优化</b>一体化系统

    飞凌嵌入式ElfBoard-Vim编辑器之GCC编译器的安装

    GCC(GNU Compiler Collection)是由GNU开发的编程语言编译器,最初是作为GNU操作系统的编译器编写的。GCC是一个编译器
    发表于 10-15 08:44

    GCC编译器,怎么才能实现c文件中未被调用的函数,不会被编译呢?

    GCC编译器,怎么才能实现c文件中未被调用的函数,不会被编译?有什么编译选项可以设置吗? 移植代码,有些函数没被调用的函数想留在代码里,但不想被编译
    发表于 09-28 12:25

    电能质量在线监测装置定位谐波源的准确有多高?

    网、测点密集、同步精准),准确可达到 90% 以上;在复杂场景(如广域电网、背景谐波波动大、测点稀疏),准确可能降至 70% 以下。以下从 “准确分级、关键影响因素、提升路径” 三方面
    的头像 发表于 09-26 15:20 859次阅读

    请问如何在keil μVision 5上进行ARM编译器的代码优化

    如何在keil μVision 5上进行ARM编译器的代码优化
    发表于 08-20 07:37

    霍尔元件在磁悬浮技术上的应用与解析

    霍尔元件在磁悬浮技术中主要承担磁场检测和反馈控制功能,其应用可归纳为以下三方面: 一、位置检测与反馈控制 .‌实时位置监测‌ 线性霍尔元件通过检测磁场强度变化,将悬浮体的位移量转化为电压信号输出
    发表于 08-07 10:40

    电子测试行业中的第三方检测机构如何解决平台灵活度低,维护困难等痛点问题?

    在竞争激烈的市场环境中,第三方检测机构面临着诸多挑战,尤其是在来料测试环节。某权威第三方检测机构就曾深陷困境,他们一方面要应对产品不确定性高与系统固化严重的矛盾,另一方面还需解决已有系
    的头像 发表于 08-06 17:07 1039次阅读
    电子测试行业中的第<b class='flag-5'>三方</b>检测机构如何解决平台灵活度低,维护困难等痛点问题?

    天合跟踪获得DNV第三方风洞测试审查报告

    三方审核。这不仅是三方合作的里程碑,更是中国光伏跟踪支架技术迈向国际高标准的重要一步。DNV对此研究成果的专业以及可靠进行了全面审查。
    的头像 发表于 07-08 17:35 1195次阅读

    边缘设备AI部署:编译器如何实现轻量化与高性能?

    、ASIC等)上高效执行的机器代码。AI编译器在AI模型的部署和优化中扮演着关键角色,能够显著提升模型的运行效率和性能。   AI编译器的主要功能   AI编译器的主要功能包括模型
    的头像 发表于 07-06 05:49 7064次阅读

    使用 Claroty SRA 优化三方 OT 远程访问

    三方,如原始设备制造商 (OEM) 技术员和维护承包商,是确保 OT 环境可用、完整和安全的关键。负责服务 OT 资产的第三方经常远
    的头像 发表于 06-17 16:11 945次阅读
    使用 Claroty SRA <b class='flag-5'>优化</b>第<b class='flag-5'>三方</b> OT 远程访问

    三方工业互联网平台有哪些

    三方工业互联网平台有哪些
    的头像 发表于 06-14 15:48 1609次阅读

    小鹏汽车出席东盟-中国-海合会三方经济论坛

    近日,东盟-中国-海合会三方经济论坛于马来西亚吉隆坡盛大开幕,中国新能源汽车领军企业代表小鹏汽车受邀出席开幕式及系列活动。
    的头像 发表于 06-04 15:42 932次阅读