目录
- 鲲鹏软件迁移概述
-
- 为什么要做软件迁移
-
- 计算技术栈与程序执行过程
- 鲲鹏处理器与x86处理器的指令差异
- 软件迁移过程概述
-
- 五个步骤完成软件迁移
-
- 迁移准备——搜集软件栈信息,准备迁移环境
- 迁移分析——分析软件栈,制定迁移策略
- 编译迁移——软件编译打包,验证基本功能
- 性能调优——利用五步法优化软件性能
- 测试与认证——保障商用上线,共建鲲鹏生态
- 典型案例
-
- 华为内部项目:大型平台软件历时4个月完成规模商用
- 互联 行业伙伴快速实现软件迁移
- 金融行业核心系统整体切换案例
- 鲲鹏开发套件,使能开发者,加速算力升级
- C/C++代码迁移
-
- 编译性语言源码——可执行程序过程介绍
-
- 从源码到可执行程序——编译性语言
- C/C++代码编译构建过程
- C/C++代码迁移典型移植类问题
-
- 代码迁移——编译迁移、编译选项移植
- 代码迁移——编译迁移、编译宏移植
- 代码迁移——builtin函数移植
- 代码迁移——内联汇编函数移植
- 代码迁移——SSE intrinsic函数移植
-
- 代码迁移- SSE itrinsic函数移植(MMX/SSE)
- 代码迁移SSE intrinsic函数移植(AVX)
- 代码迁移一SSE intrinsic函数移植方法
- 迁移工具——Porting Advisor初步代码扫描
- 本章总结
- Java/Python代码迁移
-
- Java代码迁移
-
- 从源码到可执行案例
-
- 安装合适的JDK版本
- 包含SO库调用的jar包迁移方法
- 设置JVM参数,稳定快速的运行程序
- 案例分析
-
- 源码编译、安装OpenJDK9
- netty-all-4.1.34.Final.jar迁移
- JVM参数设置,解决服务挂死问题
- Java迁移小结
- Python代码迁移
-
- 从源码到可执行案例
- 典型迁移场景处理
-
- 升级Python版本
- 含C模块或全C模块的迁移
- 案例分析
-
- numpy-1.18.1模块迁移
- Maven仓软件构建
-
- Java构建工具
- Maven介绍
- Maven依赖管理
- Maven仓库分类
- Maven仓库搜索顺序
- Maven仓库软件构建流程
- 鲲鹏Maven
- 如何配置优先搜索鲲鹏Maven仓
- 鲲鹏Maven仓库软件构建流程
- Hive编译指导
- 鲲鹏Maven仓编译Hive
- 软件包迁移
-
- rpm介绍
-
- rpm软件包组成
- rpm软件包获取渠道
- 传统rpm重构流程
-
- 扫描
- 编译
- 打包(鲲鹏上重新生成rpm包)
- 验证
- rpm迁移
-
- 鲲鹏开发套件Porting Advisor
- Porting Advisor工具实现迁移自动化
- 环境准备
- Porting Advisor快速重构rpm包流程
- rpm迁移实例
鲲鹏软件迁移概述
为什么要做软件迁移
计算技术栈与程序执行过程
软件迁移过程概述
五个步骤完成软件迁移
迁移分析——分析软件栈,制定迁移策略
性能调优——利用五步法优化软件性能
典型案例
华为内部项目:大型平台软件历时4个月完成规模商用
金融行业核心系统整体切换案例
C/C++代码迁移
编译性语言源码——可执行程序过程介绍
从源码到可执行程序——编译性语言
- 编译性语言:典型的如C/C++/Go语言,都属于编译性语言。编译性语言开发的程序在从x86处理器迁移到鲲鹏处理器时,必须经过重新编译才能运行
-
编译构建脚本类文件
编译选项的移植(指定数据类型、生成代码特性、目标执行器架构、处理器硬件加速功能等) -
C/C++源码类文件
编译宏移植(用户自定义宏移植、编译器自定义宏移植)
编译器自带builtin函数移植
内联汇编移植
SSE intrinsic函数移植(MMX/SSE类函数移植、AVX函数移植) - Cmakelists.txt文件修改
●add_ definitions( -Wall -mabi=lp64 -9)
●set(CMAKE_ CXX_ FL AGS “-Wall – mabi=lp64-g” )
●add_ compile_ options(-Wall -mabi=lp64 -9) - Makefile文件修改
cc/g++ -Wall -mabi=lp6A -9 -0…-… - 本章简要介绍:了C/C+ +代码的编译原理及构建流程,重点对典型迁移类问题及方法进行详细介绍。
最后引入Porting Advisor开发工具,帮助学员快速、高效的完成C/C+ +代码迁移。 - 核心类移植项及迁移方法:
- 编译选项移植:关注平台差异项(用好编译器官方文档)
- 编译宏移植:区分编译器/用户自定义宏移植
- builtin函数移植:关注常用builtin函数替换
- 内联汇编移植:识别核心汇编指令,用好汇编指令/builtin函数替换
- SSE intrinsic函数移植:开源工程、官 指导手册相结合
- 改动点:安装JDK版本
- 通过yum安装
- 源码编译安装
- 引用的SO库需重新编译
- 根据业务实际情况,调整JVM参数
- Maven官 链接: http://maven.apache.orgl
- Maven’下载链接: http://maven.apache.org/download.cgi
- Maven安装指导: http://maven.apache.org/install.html
链接: https://gcc.gnu.org/onlinedocs/gcc- 7.3.0/gcc/Submodel-Options.html#Submodel-Options
代码迁移——编译迁移、编译宏移植
代码迁移——内联汇编函数移植
代码迁移——SSE intrinsic函数移植
代码迁移SSE intrinsic函数移植(AVX)
本章总结
Java/Python代码迁移
Java代码迁移
从源码到可执行案例
包含SO库调用的jar包迁移方法
案例分析
源码编译、安装OpenJDK9
Java迁移小结
Python代码迁移
从源码到可执行案例
含C模块或全C模块的迁移
Maven介绍
Maven是Apache下的一个纯Java开发的开源项目,基于项目对象模型(缩写: POM) ,可以对Java项目进行构建、依赖管理
Maven依赖管理
在Java世界中,可以用groupld、 artifactld、 version组成的Coordination (坐标)唯一标识一个依赖。
pom.xm|文件中一个典型的依赖引用如下图,Maven编译时会自动拼接路径和文件名, 去本地或远程仓查找。
Maven仓库软件构建流程
Maven软件构建关键流程:将X86依赖文件替换成Kunpeng依赖文件,重新构建,直到不包含X86依赖
鲲鹏Maven仓编译Hive
rpm介绍
rpm软件包组成
传统rpm重构流程
编译
验证
Porting Advisor工具实现迁移自动化
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!