鲲鹏系列一: 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):支持自动生成目标工程的中间文件,不需要用户修改编译脚本

相关文章
|
机器学习/深度学习 TensorFlow 数据处理
使用GRU(Gated Recurrent Unit)模型来预测股票未来20天的行情
使用GRU(Gated Recurrent Unit)模型来预测股票未来20天的行情,使用了200天的历史行情作为输入数据。请注意,这只是一个简单的示例,您可以根据需要进行更多的模型调整和数据处理。
CCF推荐A类会议和期刊总结:计算机体系结构/并行与分布计算/存储系统领域
中国计算机学会(CCF)2022年版推荐目录涵盖了计算机体系结构、并行与分布计算、存储系统领域的多个A类会议和期刊。本文汇总了这些顶级资源的全称、出版社、dblp网址及领域。包括《ACM计算机系统汇刊》、《ACM存储汇刊》等期刊,以及ACM PPoPP、USENIX FAST等会议,为研究人员提供了重要学术参考。
13556 64
CCF推荐A类会议和期刊总结:计算机体系结构/并行与分布计算/存储系统领域
|
vr&ar Android开发 数据安全/隐私保护
Android与iOS的演变:一场永无止境的技术较量
【10月更文挑战第27天】 在智能手机操作系统的领域里,Android和iOS一直是两个不可忽视的巨头。它们不仅推动了移动设备技术的快速发展,也引领了用户界面设计和应用程序生态的潮流。本文将探讨这两个系统从诞生到现在的发展轨迹,以及它们之间的竞争如何塑造了今天的移动科技世界。
271 0
|
人工智能 自然语言处理 云计算
软件开发的最新趋势和未来展望
软件开发领域正处于快速发展的阶段,不断涌现出新的技术和方法。从人工智能、云计算到低代码开发,这些趋势都在推动着软件开发的革新和创新。未来,随着技术的不断进步,我们可以期待更多令人激动的变革和机遇。无论是开发者还是业务,都应该保持敏锐的洞察力,及时采纳新技术,以适应不断变化的软件开发领域。
761 1
软件开发的最新趋势和未来展望
|
机器学习/深度学习 人工智能 PyTorch
面向AI Native应用的高效迁移学习策略
【8月更文第1天】随着人工智能技术的发展,越来越多的应用场景需要定制化的AI解决方案。然而,从零开始训练一个深度学习模型往往需要大量的标注数据和计算资源。迁移学习提供了一种有效的方法来解决这个问题,它利用预训练模型的知识,通过少量的数据就能达到很好的性能。本文将深入探讨面向AI Native应用的高效迁移学习策略,并通过实例展示如何针对具体场景进行模型微调。
475 6
面向AI Native应用的高效迁移学习策略
|
存储 SQL 关系型数据库
OceanBase与MySQL有何区别?
【8月更文挑战第12天】OceanBase与MySQL有何区别?
3608 3
|
Java 应用服务中间件 API
如何安装与使用Java EE 8、Servlet 3.0及Apache Maven进行高效开发
【7月更文第1天】搭建高效Java EE 8开发环境,包括安装JDK、选择WildFly或Payara Server作为应用服务器,以及安装Apache Maven。使用Maven创建Servlet 3.0 Web项目,编写 HelloWorldServlet,打包部署到服务器,通过访问特定URL测试应用。这一流程助力开发者实现快速原型和大型项目开发。
513 0
|
存储 Sentinel
链表中哨兵(头结点)的作用
链表中哨兵(头结点)的作用
|
缓存 NoSQL Java
优化Redis缓存:解决性能瓶颈和容量限制
优化Redis缓存:解决性能瓶颈和容量限制
374 0
|
SQL NoSQL 关系型数据库
postgresql|数据库|SQL语句冲突的解决
postgresql|数据库|SQL语句冲突的解决
703 0