zoukankan      html  css  js  c++  java
  • Huawei 华为鲲鹏 AvxToNeon 系统库

    AvxToNeon是一款接口集合库。当使用Intrinsics接口的应用程序从传统平台迁移到鲲鹏计算平台时,由于各个平台的Intrinsic函数定义不同,需要逐一对于Intrinsic函数重新进行适配开发。针对该问题,我们提供了AVX2Neon模块,将传统平台的Intrinsic接口集合使用鲲鹏指令重新实现,并封装为独立的接口模块(C语言头文件方式),以减少大量迁移项目重复开发的工作量。 用户可以通过将头文件导入应用程序即可继续使用传统平台的Intrinsic函数。

    Intrinsic:这里指的是基于gcc编译的一种内建函数,一般是对处理器高级指令(如向量化指令等)的C内联函数格式封装,各个处理器厂商的接口定义存在较大差异。

     

    将依赖Intel Intrinsic的应用快速迁移到鲲鹏生态。 适配函数以头文件方式集成到Porting Advisor工具,通过工具识别迁移点,并提供一键式快速迁移。

     

           


    当将使用Intel内部指令的应用程序从x86架构移植到Kunpeng架构时,由于Arm64指令名称和功能与x86不同,因此需要进一步开发指令。结果,导致巨大的移植工作量。在该项目中,常用的AVX指令被封装为独立的模块,以减少重复的开发工作量。AVX指令被相关的NEON SIMD指令替代,而指令名称和功能保持不变。用户可以通过将相关的头文件导入应用程序软件来调用相应的指令。

    要求

    • 处理器:Kunpeng 920

    指南

    在源代码目录中,源目录包含功能实现文件。avx512intrin.h,avxintrin.h和emmintrin.h文件实现指令翻译,而avx2neon.h文件包含它们的头文件。如果应用程序软件包含avx2neon.h,则用户可以执行指令。使用头文件时,用户需要添加编译选项,例如ARCH_CFLAGS = -march = armv8-a + fp + simd + crc。

    测试

    该项目还为开发人员提供了接口测试用例。测试用例的逻辑实现代码位于tests目录中,而测试用例的输入数据和预期输出位于data目录中。使用以下命令执行测试用例:

    (1) cd tests
    (2) make
    (3) ./test
    

      

    执行测试命令,控制台上将显示类似以下信息:

    Running Test MM512_CASTPS128_PS512
    
    ...
    
    Running Test MM256_SET_EPI32
    
    AVX2NEONTest Complete: Passed 265 tests: Failed 0
    

      

    此项目中提供的所有说明均已在CentOS Linux版本7.6.1810(AltArch)和EulerOS V2.0SP8,GCC 7.3,GCC 4.8.5和GCC 9.2.0中进行了验证。

     

  • 相关阅读:
    递归与分治4
    递归与分治3
    递归与分治2
    递归与分治1
    枚举与递推3
    枚举与递推2
    求编译器中数的最值(c++)
    移动小球链表实现
    阶乘的精确值
    while((c = getchar()) != EOF)(键盘输入问题)
  • 原文地址:https://www.cnblogs.com/sddai/p/13647942.html
Copyright © 2011-2022 走看看