为什么必须将代码从x86迁移到ARM,这篇文章给你答案( 四 )
SSEintrinsic函数移植(SIMD技术):Intel的SIMD扩展指令统称SSE,主要分为三类,MMX是64位寄存器,SSE到SSE4是28位的,三是AVX256和AVX512 。 鯤鹏基于SIMD的技术发展比较成熟,现在有些基于开源量的NEON库主要是在图象处理和视频处理层面 。
SSEintrinsic函数移植(MMX/SSE):针对MMX指令,x86上用的是-m64的向量做加法运算,对应到鲲鹏上是int32×2然后再做加法运算,类似于常用的C函数规则;针对SSE指令,从内存中加载4个单精度浮点数据到寄存器,x86是load,对应到鲲鹏用的是vld1q 。
SSEintrinsic函数移植(AVX):以AVX指令使用了256位寄存器运算为例,向量A和向量B中分别存储了8个单精度浮点型(32位),对应到鲲鹏处理器上,使用128位寄存器实现SIMD(SingleInstructionMultiData)进行计算 。
尽管解释性语言难度降低,但Java、Python代码迁移过程中同样有一些问题需要注意 。
----为什么必须将代码从x86迁移到ARM , 这篇文章给你答案//----
如上图所示,Java想要进行迁移的话,首先需要安装运行环境JDK,Java源码通过Java编译器之后就会生成一个Java的字节码,这时候可能jar包会有一些SO库的依赖,那就需要链接进行打包 。
这整个的过程,存在迁移修改点的地方有二,一是JDK的安装,迁移过来推荐使用华为的JDK或者OpenJDK;二是对SO库这个二进制库的依赖,如果你是在x86下编译的,毫无疑问,这在鲲鹏下面是没办法进行运行的,所以你需要拿到相应的源码或者找到aarch64的SO库来进行替换,最后进行重新打包 。
为什么必须将代码从x86迁移到ARM,这篇文章给你答案。再来看Python源码的迁移,其实与Java很类似,也是需要从编译环境和SO库两大方面入手修改 。 环境上推荐使用A32,Python3你也可以通过样本安装,也可以通过源码安装;SO库有多种类型,但对于各种方式的SO库,最后都是对应为一个SO,定义为SO库,需要的步骤也都是一致的,即装配环境、重新编译、重新替换 。
不同的地方只是前面安装的是Python的运行环境 。 Python源码同样通过解释器生成一个字节码,这时候可能我们会依赖外部的一些Pythonimport模块进来,这些模块里面可能有一些SO库,Python解释器的解释执行后就是部署运行了 。
相对于C++来说,Java/Python的迁移点并不是太多,总结下来,主要需要注意两点:
编译器包括解释器的安装、迁移,这里有两种方式,方式一是通过YAM源的方式进行安装,方式二是找到源码进行编译重新安装 。
x86依赖SO库的情况下,需要找到SO库相应的源码,进行重新编译后实现替换 。
写在最后
“拿华为的话说,就是自己的降落伞自己先跳 。 长虹大数据平台的规模比较大,有一百多个服务器,原来是一个PB级的数据存储,涉及到的整个生态组件有20多个,我们将原来存在的1700多万的终端业务迁移到基于鲲鹏的大数据计算平台,耗时近5个月 。 鲲鹏的架构在HBS场景下优势凸出,另外在存储、IO等方面基本上是持平,总体来说,鲲鹏的芯片表现性能都还不错 。 ”长虹计算产业事业部技术总监蒲文龙这样评价到同行者华为鲲鹏 。
推荐阅读
- 热量|为什么有的人喝凉水都长肉,有的人却光吃不胖?营养科医生:原因其实很简单
- 『中越战争』1979年的中越战争,为什么世界各国都认为越南会赢?主要的原因其实有3点
- 蜜蜂蜇熊刺针拔不出而被肢解致死
- 三星手机|为什么三星手机,在我国越来越没市场了?原来这是必然结果
- 胖子撩综艺|为什么特斯拉这么受欢迎?自主品牌造不出水平相当的电动汽车吗?
- 轻拔琴弦|AI挑战赛「潮流商品标签识别」:谁说写代码的人不懂潮?
- 不执著财经|为什么越来越多的外企都搬迁到东南亚?
- 『程序员』装出新高度! 程序员用代码写招租广告只因不想与其它行业人士合租
- 罗民教授|看到好多脑梗的病人,而且是正值壮年的男人居多,这是为什么呢?
- 美国得克萨斯州|6岁男孩在校戴耳环被禁,妈妈怒指校方性别歧视:为什么女生就行?
