-
点赞活动又来啦!礼品丰厚,快来参加~活动时间:即日起-11月16日在本贴下面分享参观鲲鹏创新基地展厅的心得体会,赢好礼!玩法一:分享参观图片+文字,可参与抽奖,抽奖比例为总回复数量20%,奖品:攻城狮行李牌玩法二:分享参观图片+文字,邀请好友为回复点赞回复格式:我的华为云账号:(图片)我参加了XXX,XXXXX如何邀请好友为自己的留言楼层点赞?名单公示:所有玩法的中奖名单,在活动结束后10个工作日内,均将公示至此贴评论区,敬请关注。说明:1)请务必使用个人账号参与活动(IAM、企业账号等账号参与无效);2)邀请新用户点赞方有效哦~楼主邀请的点赞者需为新用户(新用户:此活动为注册华为云账号后,参与的第1个活动,即为新用户)3)参与活动点赞的用户,按点赞人数进行排名,若点赞人数一致,则按楼层前后为标准,进行排名;4)本次活动,活动获奖名单预计于活动结束后10个工作日内完成公示,15个工作日内完成奖品发放,发放时间根据实际情况动态调整,如有延期敬请见谅;5)本活动最终解释权归华为云所有。6)活动有任何问题,请联系小助手。(工作日9点至18点回复消息,如回复不及时请见谅)
-
【功能模块】【操作步骤&问题现象】1、CentOS 7.6上安装了GNOME图形化界面2、使用浏览器播放视频失败,提示可能需要视频解码【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
HPC( High Performance Computing,高性能计算)领域尤其是超算应用主要是解决计算密集型、海量数据处理等业务的计算需求,如科学研究、气象预报、计算模拟等。如何提高计算能力、极致化应用性能成为当前 HPC 领域各大超算平台最关键的课题之一,而作为基础软件的明珠——编译器在其中发挥着至关重要的作用。毕昇编译器作为一款基于鲲鹏平台的高性能编译器,在编译算法、加速指令集、 Autotuner 等方面对应用场景进行了深度的优化,为开发者提供高效的性能加持。01 了解毕昇编译器毕昇编译器是基于 LLVM,针对鲲鹏平台进行了深度优化的高性能编译器。除支持 LLVM 通用功能之外,对以下三个方面进行了增强,使得鲲鹏平台的强劲算力能够最大限度地得到释放。高性能编译算法:编译深度优化,内存优化增强,自动矢量化等,大幅提升指令和数据呑吐量。加速指令集:结合 NEON/SVE 等内嵌指令技术,深度优化指令编译和运行时库,发挥鲲鹏架构极致算力。AI 迭代调优:内置 AI 自学习模型,自动优化编译配置,迭代提升程序性能,完成最优编译。图 1 毕昇编译器特性架构图当前毕昇编译器已广泛应用于多种 HPC 典型场景,如气象、安防、流体力学等,性能优势已初步体现。其中,SPEC CPU 2017 benchmark 跑分平均优于 GCC 20%以上,HPC 典型气象应用 WRF 优于 GCC 10%。图 2毕昇编译器与开源编译器SPEC CPU 2017 跑分对比 02毕昇编译器典型优化场景及其优化原理1 结构体内存布局优化—大幅提升缓存命中率,突破访存瓶颈SPEC CPU 2017 benchmark 中的 mcf 子项是对内存要求极高的应用,它是一款叫做MCF的大规模交通规划软件的核心代码。 其瓶颈代码如下图左边所示。图 3 结构体优化原理示意图可见在 struct 中,data1 的使用率极高,而 data2 是不使用的。然而由于源代码中,数据的排布是以结构体数组的形式排布。按照一般编译器的编译方式,拿数据时每次都会将整个结构体放到 cache 里面,导致大量不参与计算的 data2 也被加载到了 cache 中,造成高速内存空间的浪费和性能的损耗。毕昇编译器会通过用户标记的结构体声明,或者通过自动检查循环中适合优化的内存场景,确认优化点。然后通过将结构体数组变为数组结构体的方式(如上图右),将有效数据紧凑排布,从而提高 cache 命中率和应用性能。经测试,此优化可以对 mcf 子项带来50%的性能提升。2 自动矢量化—计算效率提升的秘诀鲲鹏平台支持 Armv8 NEON 矢量化指令集。当前支持32个128位的矢量寄存器,指令可以同时操作4*32或2*64的数据。毕昇编译器依托这种硬件优势做了大量优化,包括 SLP(superword-level parallelism) 矢量化和循环自动矢量化。例如在 SPEC CPU 2017 benchmark 中处理视频流格式转换的x264子项中,毕昇编译器会自动识别并使用 uabd 和 udot 这类高效向量指令完成计算来替换标量指令,增大单时钟周期的数据处理量, 从而大幅提升计算效率。对于 x264 子项,这项优化可有效提升其30%的计算效率。图 4 矢量化优化示例3 Autotuner—基于机器学习快速获取最优编译配置如何获取性能最优编译选项是编译器使用中常见的问题,往往需要长时间的手动选项调优。为了减少这其中的工作量,使得用户能快速找到最优的优化选项,毕昇编译器自研了基于 ML 的自动搜索技术(ML-based Search) 的 Autotuner 工具。Autotuner 的调优流程由两个阶段组成:初始编译阶段(initial compilation)和调优阶段(tuning process),如下图所示:图 5 Autotuner 使用流程简单来说,在初始编译阶段,编译器会通过用户指定的调优方向,对可调优的代码区间进行标记。在随后的调优阶段,Autotuner 会根据搜索算法对不同的优化区间生成不同的编译配置。然后使用此配置编译运行,并根据运行性能的反馈来迭代优化配置参数。最后经过给定迭代次数后找出最优配置供用户使用。在实践过程中,通过 Autotuner 对 Coremark Benchmark 进行调优可以获取5%以上的收益。 以上介绍的三个优化特性分别是毕昇编译器在中前端算法优化、后端指令优化、迭代调优中最具代表性、在各自领域对性能提升表现最佳的三个特性。除以上介绍的三个优化特性之外,毕昇编译器在软件预取、循环优化、分支预测、指针压缩等编译优化技术均有探索且取得了显著的收益,详情可点击“阅读原文”获取毕昇编译器详细信息,快来试试吧!原文链接:https://www.hikunpeng.com/developer/devkit/compiler?data=bisheng
-
传统编译优化技术当前的热点研究方向有哪些?业务从 x86 架构迁移到 ARM 架构会遇到哪些挑战?编译优化如何从底层提升业务竞争力?本次分享将为大家介绍华为鲲鹏产业几大编译产品,并从原理解读优化技术如何实现。 本主题将聚焦于介绍华为鲲鹏毕昇编译器,GCC 编译器和毕昇 JDK 的架构,及涉及的高性能编译优化技术,并结合鲲鹏架构特点,阐释如何通过深度优化指令编译,引入或增强优化算法等方法,发挥鲲鹏极致算力。
-
内存子系统是现代计算机系统中的一个主要性能瓶颈,降低内存延迟和所需的吞吐量以提高性能至关重要。在计算机系统中,CPU高速缓存(Cache)处于金字塔式存储体系自顶向下的第二层,仅次于CPU寄存器,容量远小于内存,但速度可以接近CPU的频率。当处理器发出内存访问请求时,会先查看缓存内是否有请求数据。如果存在,则不经访问内存直接返回该数据;如果不存在,则要先把内存中的相应数据载入缓存,再将其返回处理器。有效利用Cache可以极大提高程序的访存效率,降低系统的内存瓶颈,而程序运行时是否能有效利用缓存,取决于访存的局部性特征。如何通过各种优化手段,高效利用内存局部性,提升系统性能对编译器来说是一个巨大的挑战。1 结构体内存布局优化结构体内存布局优化基于全程序(Whole-program)优化,用以提高缓存(cache)利用率。优化的主要手段是将结构体数组转换为数组结构体,结构体可以是显式的,也可以通过检查循环中的数组使用情况来推断它们。基本原理如图1所示: 图1 结构体内存优化原理示意图2 数组重排列优化和结构体类似,数组也可以重新排列(重新映射),将非连续的数组访问转换成连续的数组访问。 图2 数组重排列优化原理示意图性能测试,LBM(Lattice Boltzmann Method) 鲲鹏920 1P/2P环境下测试效果:毕昇编译器经过array remapping优化后,在1P(64 copies) 和 2P(128 copies)场景下,性能均能提升1倍以上。图3 数组重排列优化在LBM算法上的优化效果3 软件预取增强软件预取是提高Cache利用率的重要手段。鲲鹏处理器提供了软件预取指令,编译器可以显式生成预取指令,指定需要预取的数据,从而将所需数据提前从内存读入Cache。如果编译器能够准确计算需要预取的数据地址,基本保证每次CPU需要读取数据时,数据刚好通过预取指令读入Cache,则访存的延时可以大大降低。但是预取指令本身的执行会带来额外的开销,如果不能在正确的时间发出预取指令,或者预取的内存地址与实际需求相差很远,可能会导致Cache污染,反而降低系统的性能。因此编译器生成软件预取指令的能力对生成高性能的二进制至关重要。毕昇编译器通过与鲲鹏处理器协同,将硬件相关特征准确建模,使得编译器预取分析相关代码能够准确模拟鲲鹏处理器的访存特征,再通过循环、数组等典型内存访问场景的分析增强,从而准确生成对目标内存的预取指令,提升程序运行性能。for (int i = 0; i < N; i++) { sum += a[i] * b[i]; }如上所示代码,经过编译器分析后,可以插入如下的预取指令:for (int i = 0; i < N; i++) { prefetch(&a[i+k]); prefetch(&b[i+k]); sum += a[i] * b[i]; }以上代码中的a[i+k]为预取的数据,k代表提前多少次迭代预取所需的数据。这一数字取决于底层硬件的访存延时、Cache line大小等等。通过对鲲鹏处理器相关参数的分析与建模,毕昇编译器可以针对类似场景生成准确的预取指令。同时,LLVM原生的软件预取分析能力有限,例如当循环的步长不是编译时常量时,无法做出预取分析,这会导致有些场景无法生成预取指令。毕昇编译器对此做了增强,使得软件预取可以在复杂循环场景下完成分析,从而覆盖更多的内存访问场景。软件预取对SPEC CPU2017,多个HPC Workload的性能都有大幅提升。
-
本期精彩看点:如何直观体验BoostKit加速黑科技场景化使能套件:https://www.hikunpeng.com/developer/boostkit/scene上一篇:鲲鹏BoostKit主流场景关键特性的软件包如何获取?下一篇:如何查询鲲鹏BoostKit各个场景的组件与操作系统的兼容性?
-
又一次在鲲鹏抽奖中荣获大奖,上次是在去年的年终庆典中也是抽中手机一台,感谢鲲鹏。上个图纪念下
-
环境信息,三台物理机: 处理器: HUAWEI Kunpeng 920 5230 OS: CentOS Linux release 7.6.1810 (AltArch) 内核版本:4.14.0-115.el7a.0.1.aarch64iscsi挂载卷失败,提示内核不支持。有在centos7.6上对接iscsi上验证成功的吗?
-
【功能模块】vscode 连接鲲鹏服务器【操作步骤&问题现象】1、vscode安装插件ssh remote2、 使用配置连接同网段的鲲鹏服务器3. ssh连接是过了可以看到,但是出现莫名其妙的Could not Fetch remote environment【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
本期精彩看点:鲲鹏BoostKit主流场景关键特性的软件包如何获取开发者资源下载:https://www.hikunpeng.com/developer/software上一篇:如何获取最佳实践和代码样例参考文档?下一篇:如何直观体验BoostKit加速黑科技?
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签