38

极术小姐姐 · 2023年04月14日 · 北京市

鲲鹏系列一: DevKit代码迁移工具技术要点总结

简介:处理器所支持的指令集不同,意味着开发者可能需要对代码进行跨平台的迁移。通常,代码迁移是件复杂又繁琐的工作,需要花费开发者大量精力对软件包、源代码、依赖库文件进行人工分析、检查和识别,手动修正不同指令集之间的相关差异,这些差异主要涉及语法、指令、函数和库文件支持情况。

处理器所支持的指令集不同,意味着开发者可能需要对代码进行跨平台的迁移。通常,代码迁移是件复杂又繁琐的工作,需要花费开发者大量精力对软件包、源代码、依赖库文件进行人工分析、检查和识别,手动修正不同指令集之间的相关差异,这些差异主要涉及语法、指令、函数和库文件支持情况。为了解决用户代码可迁移性人工排查困难、移植经验欠缺、反复依赖编译调错定位等,投入工作量大,整体效率低的问题,我们推出Kunpeng Porting Advisor鲲鹏代码迁移工具。

鲲鹏代码迁移工具是一款可以简化应用迁移到鲲鹏架构服务器过程的工具。主要面向鲲鹏平台的开发者、用户和第三方待迁移软件提供方开发工程师,对海量代码进行快速地自动化扫描和分析,提供专业的迁移指导报告。同时能够自动分析出需修改的代码内容,并指导如何修改,帮助开发者实现高效的代码迁移。同时支持原生开发代码亲和检查等能力。

image.png

代码迁移工具功能特性
代码迁移工具可以作为独立软件提供给鲲鹏生态用户安装使用,支持的功能特性如下

软件迁移评估
检查用户提供的软件安装包,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载接

检查用户在x86服务器上已安装的软件,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载接。

源码迁移
检查用户C/C++/汇编/Fortran代码软件构建工程文件,并指导用户如何迁移该文件

检查用户C/C++/汇编/Fortran/python/Java/Scala/Go软件构建工程文件使用的链接库,并提供可迁移性信息

检查用户C/C++/汇编/Fortran软件源码,并指导用户如何迁移源文件

软件包重构
分析用户x86软件包构成,重构为适用于鲲鹏平台的软件包。

专项软件迁移
基于我们丰富的软件迁移经验,帮助用户快速迁移Web、数据库、大数据、高性能计算四大解决方案类软件。

鹏亲和分析
目前含64位运行模式检查、结构体字节对齐检查、缓存行字节对齐检查、内存一致性检查、构建亲和检查。

image.png
使用方式:支持命令行方式、Web、IDE插件三种工作模式,后两种方式下支持多用户并发扫描。

限制:工具不支持迁移windows环境下的软件或者ISO/Mac OS平台应用至Kunpeng平台Linux环境下。

应用场景:

image.png

image.png
内存一致性
(1):静态检查,检查用户软件迁移到鲲鹏平台可能存在的弱内存序问题并修复

(2):自动修复功能,更新用户使用的GCC编译器,在用户软件的编译过程中自动完成弱内存序问题的修复

(3):支持下载静态检查工具产生的BC文件,可根据实际需要进行BC文件扫描分析

(4):静态检查工具、编译器自动修复工具组合使用,可一键式修复

(5):支持自动生成目标工程的中间文件,不需要用户修改编译脚本

文章来源:阿里云开发者社区
作者:云言·云议

推荐阅读

更多Arm服务器相关技术及移植干货请关注Arm服务器专栏。如要加入Arm Server微信群,请添加极术小姐姐(微信id:aijishu20)备注Arm服务器邀请加入。
推荐阅读
关注数
17321
内容数
73
分享arm服务器软件应用经验、测试方法、优化思路、工具使用等。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息