鲲鹏应用开发与迁移课件 第六章 应用迁移教程_第1页
鲲鹏应用开发与迁移课件 第六章 应用迁移教程_第2页
鲲鹏应用开发与迁移课件 第六章 应用迁移教程_第3页
鲲鹏应用开发与迁移课件 第六章 应用迁移教程_第4页
鲲鹏应用开发与迁移课件 第六章 应用迁移教程_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用迁移教程鲲鹏应用开发与迁移目录CONTENTS应用迁移原理编译型语言迁移解释型语言迁移010203应用迁移工具迁移常见问题及解决040501应用迁移原理鲲鹏应用开发与迁移计算技术栈层次结构计算技术栈从底层硬件到顶层应用逐渐抽象,半导体材料、晶体管、逻辑门、微架构、指令集架构、二进制机器码、汇编语言、高级编程语言、算法及应用各司其职。例如鲲鹏芯片,其制程工艺为7nm,依托华为海思硬件研发经验,从结构上优化效能,但受量子隧穿等物理制约。常用语言分类编译型语言(如C、C++、Go)通过编译器直接编译成二进制机器码,执行效率高。解释型语言(如Python、Ruby、JavaScript)通过虚拟机将字节码转换成二进制代码,具有跨平台特性。在鲲鹏计算平台上,这两类语言开发的程序都能运行,但迁移过程稍有差异。指令集差异指令集是CPU性能体现的重要标志,不同架构CPU生成的汇编代码不同。如鲲鹏架构CPU使用ldr、str等指令,x86架构CPU使用mov等指令。鲲鹏架构CPU的机器指令为定长指令,避免了x86架构指令的切割问题,在寻址操作等方面性能更强。计算技术栈与程序执行02编译型语言迁移鲲鹏应用开发与迁移0102编译过程编译型语言的执行步骤包括编译器将高级语言转换为汇编语言,汇编器生成机器语言程序,链接器链接生成可执行代码。以C语言程序为例,使用GCC编译器,通过gcc–S命令生成汇编文件,鲲鹏计算平台和x86平台生成的汇编代码不同。迁移方法开源代码和自研项目迁移需获取源码、准备编译环境、生成Makefile、编译生成可执行程序、替换依赖库、安装部署。商业闭源软件迁移需厂商提供适配鲲鹏的版本,否则更换同类软件。编译型语言迁移原理Redis是用ANSIC语言编写的开源键值对内存数据库,支持多种数据类型,常用于缓存应用会话信息,具有分布式锁、保存热点数据等功能。在企业中,通常会建立Redis集群作为缓存集群,以保证可靠性。Redis简介获取Redis源码并解压,进入deps目录编译依赖库,编译Redis,配置文件,设置后台启动,设置开机启动,测试软件。示例代码:wgethttps://download.redis.io/releases/redis-6.2.3.tar.gz,tar-zxvfredis-6.2.3.tar.gz,make-j4等。Redis迁移步骤在迁移过程中,需注意编译环境的配置,确保依赖库的正确安装,以及配置文件的修改。示例:将Redis配置文件中的daemonizeno改为daemonizeyes,以实现后台启动。Redis迁移注意事项Redis迁移实践03解释型语言迁移鲲鹏应用开发与迁移解释型语言的源码由编译器生成字节码,由虚拟机解释并执行。以Python为例,程序经编译器生成PYC文件,交由Python虚拟机运行。Python虚拟机屏蔽了不同CPU指令集的差异,使解释型语言具有良好的可移植性。执行原理解释型语言迁移需选择适配鲲鹏的运行环境,迁移外部依赖库,更新代码中新的外部依赖库调用代码。示例:使用鲲鹏计算平台支持的Python3环境,通过yuminstallpython3命令安装。迁移方法解释型语言迁移原理Python迁移步骤安装鲲鹏适配的Python环境,设置环境变量,编译生成PYC文件,迁移外部依赖库,更新代码调用,执行源码程序。示例代码:yuminstallpython3,python3-mcompileall等。Python迁移注意事项在迁移过程中,需确保Python环境的正确安装,依赖库的适配,以及代码调用的更新。示例:若调用了编译型语言开发的依赖库,需重新编译AArch64版本的依赖库。Python迁移常见问题及解决可能遇到的问题包括依赖库不兼容、代码调用错误等,解决方法是更新依赖库,修改代码调用。示例:若依赖库报错,可检查是否为依赖库引起的问题,并重新编译或替换为适配鲲鹏的版本。Python迁移实践04应用迁移工具鲲鹏应用开发与迁移工具介绍鲲鹏代码迁移工具可分析可迁移性和迁移投入,自动分析需修改的代码内容,给出迁移指导报告和建议。该工具适用于开发和测试环境,仅支持从x86Linux操作系统到鲲鹏Linux操作系统的应用的扫描与分析。安装步骤安装鲲鹏分析扫描工具和鲲鹏代码迁移工具,满足硬件、环境依赖等要求。示例:安装鲲鹏代码迁移工具时,需配置工具安装目录、Web服务器IP地址、HTTPS端口等。使用方法使用Web模式或CLI模式安装鲲鹏代码迁移工具,安装汇编依赖文件和弱内存序依赖文件。示例:Web模式安装命令为./installweb,CLI模式安装命令为./installcmd。鲲鹏代码迁移工具动态二进制翻译工具通过即时编译技术,将源架构的二进制代码动态翻译为目标架构的代码。华为推出的ExaGear工具可将无源码的x86应用低成本、快速地迁移到ARM64平台上。工具介绍获取ExaGearforServer安装包,安装指令翻译引擎和x86运行环境,运行guest系统,安装和运行Linuxonx86应用程序。示例:安装ExaGear时,需根据操作系统的页大小选择对应的安装包,如sudorpm-ivhexagear-utils-<package_version>.noarch.rpm等。安装及使用ExaGear工具的指令翻译引擎和x86运行环境使用户能够轻松迁移无源码的x86应用,降低了迁移难度。示例:在guest系统中安装x86的Nginx时,可使用yuminstallnginx命令,安装完成后可在guest和host系统中运行。工具优势动态二进制翻译工具05迁移常见问题及解决鲲鹏应用开发与迁移char型变量默认符号不一致问题现象:编译C/C++代码时出现warning:comparisonisalwaysfalseduetolimitedrangeofdatatype。原因分析:鲲鹏平台char默认为unsignedchar,x86平台为signedchar。解决思路:在编译选项中加入-fsigned-char,或直接声明为signedchar。数据类型转换问题双精度浮点型数据转整型数据时,鲲鹏平台与x86平台的表现不同。解决思路:参考数据转换表格调整代码,如表6-7至表6-10所示。数据类型问题弱内存序导致程序执行结果不一致问题现象:鲲鹏平台采用弱内存序,可能出现代码编写顺序和执行顺序不同的情况。原因分析:CPU或编译器会进行优化,导致指令执行顺序改变。解决思路:使用内存屏障指令保证对共享数据的访问和预期一致,如加入write_memory_barrier()等。编译选项差异编译错误:无法识别-m64编译选项。原因分析:鲲鹏平台不支持-m64选项。解决思路:将鲲鹏平台对应的编译选项设置为-mabi=lp64。内存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论