【鲲鹏展翅】华为云·云享专家刘坤:一次刻苦铭心的鲲鹏软件迁移,让我学会太多
在计算行业,如何提供更强的算力一直是永恒的话题,也是无数科研技术人员努力的方向和目标。
刘坤便是这其中的一员,作为鲲鹏计算产品部的研发工程师,他每天的工作内容就是鲲鹏软件的迁移和性能调优,让上层软件业务得以在国产化高性能算力平台上得到最佳运行体验。
从小试牛刀遇到一堆技术坑,到推出便捷的迁移开发套件,国产化改造的过程总是充满了未知的艰辛,刘坤形容当时那种徒手、死磕的迁移过程还挺痛苦的,万幸在一次次的尝试和调优后,他们找到了鲲鹏迁移的康庄大道。
一次刻苦铭心的鲲鹏软件迁移
去年1月,由华为自主设计完成的鲲鹏920处理器正式发布,作为目前业界较高性能的arm架构处理器,鲲鹏920采用7nm制造工艺,主频为2.6GHz,单处理器可支持32/48/64核,最大支持8通道DDR4,足够提供强劲的内存带宽。

基于华为鲲鹏处理器,适合为大数据、分布式存储、原生应用、高性能计算和数据库等应用高效加速,而且鲲鹏920在SPECint Benchmark评分中也有较高的分值水平,以更低功耗为数据中心提供更强性能。
刘坤表示,实操过后更能体会到鲲鹏处理器的妙处。
这一年里,刘坤迁移过很多软件到鲲鹏处理器上,既有C/C++编译型语言软件,也有像Java、Python这种解释型语言软件。
其中,令他印象最深的是涉及大量汇编、编译选项、SSE intrinsic函数的impala、kudu组件,这个组件的迁移,牵涉到非常多的重新编译工作。
首先当一个软件从其他架构平台搬迁到鲲鹏处理器,需要对其重新编译。刘坤解释道,“鲲鹏处理器采用的是精简指令集,其汇编指令和其他架构存在差异,指令的不同导致鲲鹏处理器无法识别其他架构的指令,自然需要针对汇编指令进行移植。”
其次,编译器针对不同平台有相应的编译选项进行匹配,指示编译时需要使用该架构特有的属性编译,毫无疑问地也需要对应迁移。
比如SSE intrinsic这类X86下特有的SIMD扩展指令集函数,由于基于X86架构特有向量寄存器支持设计,在鲲鹏处理器下也应该替换成鲲鹏处理器的NEON intrinsic函数。
“当时和同事们鏖战了很久,真的是艰苦奋战,还好最终顺利完成了组件的迁移,并在保证基本功能完善的同时还优化得到较好的性能。”
投身鲲鹏生态建设,乐在其中
虽然迁移过程中困难重重,但刘坤也是乐在其中。
“一个复杂组件的迁移,让我从软件到硬件层面理解了架构差异带来的变化,也第一次接触到了NEON向量指令、向量寄存器,并对软件的编译、加载、运行过程有了更深刻的认识。”
基于多个鲲鹏迁移项目的经验,刘坤和团队也将技术进行系统化的优化,开发了华为鲲鹏开发套件,这其中包含分析扫描工具(dependency advisor)、代码迁移工具(porting advisor)以及性能优化工具(Tuning Kit)。
举个例子,之后的软件迁移中,只需用代码迁移工具就可以快速的完成以上组件的迁移,让软件迁移变的轻松、快速。
经过一年多的努力,目前获得鲲鹏认证的行业解决方案已达2000多个,包括操作系统(麒麟、普华、统信),数据库(达梦、金仓、高斯),中间件(金蝶、东方通、宝兰德)都已完成了对鲲鹏的适配。
鲲鹏计算产业是一片沃土,未来会有大量的软件、集群、系统等上层应用迁移和运行在鲲鹏处理器上,也会有更多的厂商、ISV合作伙伴、开发者参与到这个大产业中。
最后,刘坤表示自己非常庆幸参与和见证鲲鹏计算产业的崛起和发展,未来也将继续投入这片热潮中,作为一个研发工程师,继续耕耘。

- 点赞
- 收藏
- 关注作者
评论(0)