开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

AVX2KI介绍

简介

AVX2KI(Avx To Kunpeng Intrinsic)是Intel Intrinsics指令函数的Arm实现的一款接口集合库,将传统平台的Intrinsic接口集合使用鲲鹏指令重新实现,并封装为独立的接口模块(C语言头文件方式),以减少大量迁移项目重复开发的工作量。用户可以通过将头文件导入应用程序继续使用传统平台的Intrinsic函数。

AVX2KI面向ARM/AArch64平台的x86 SIMD intrinsic兼容层实现。它通过NEON、SVE 256-bit和SVE 512-bit后端,为使用Intel风格intrinsic接口的代码提供迁移基础,帮助业务在鲲鹏ARM平台上以较小源码改动完成编译和运行适配。

从当前仓库的公开头文件和实现代码来看,AVX2KI的定位主要包括:

  • 提供__m64__m128__m128i__m128d以及更宽向量类型的兼容定义。
  • 提供大量_mm_*_mm256_*_mm512_*风格接口声明与实现。
  • 提供C++场景下的向量操作符重载,降低迁移代码的改造成本。
  • 提供版本查询接口以及功能测试、性能测试、随机测试等测试框架。

应用场景:Intel Intrinsics指令适配迁移鲲鹏处理器。

核心模块

  • 类型与宏定义模块include/avx2ki_type.h定义向量类型、掩码类型、比较常量、状态码和版本结构体,是整个兼容层的基础。
  • 核心接口模块include/avx2ki_core.h暴露AVX2KI_GetProductVersion,用于获取组件和软件版本信息。
  • Intrinsic 声明模块include/avx.h声明大量x86风格intrinsic接口,是业务代码直接包含和调用的主要入口。
  • C++ 操作符重载模块include/operatoroverload.h在ARM C++编译场景下为向量类型提供+-*/按位运算等重载。
  • NEON 后端模块src/avx2neon/提供基于ARM NEON的兼容实现,也是SVE/SVE512目标的共享基础之一。
  • SVE / SVE512 后端模块src/avx2sve/src/avx2sve512/在NEON公共实现上补充更宽向量后端能力。
  • 公共能力模块src/common/提供版本实现、CPU特性、通用逻辑和公共数据结构。
  • 测试模块test/下包含功能测试、性能测试、随机测试、对比数据与自动化脚本。

对外核心接口函数

以下内容是从公开头文件中筛选出的代表性接口示例,用于说明AVX2KI的能力范围,并非完整API列表。

模块分类 接口函数/能力 功能说明
版本信息 AVX2KI_GetProductVersion 获取产品名、组件名、组件版本、软件名和软件版本等信息。
基础向量运算 _mm_add_epi32_mm_sub_epi64_mm_mul_pd_mm_div_ps 提供标量/向量整数与浮点运算能力。
逻辑与比较 _mm_and_si128_mm_or_si128_mm_xor_si128_mm_cmpeq_epi32 支持按位运算和常见比较操作。
数据搬运 _mm_loadu_si128_mm_storeu_si128_mm_load_pd_mm_store_ps 支持常见的加载、存储和类型转换接口。
扩展向量接口 _mm256_hadds_epi16_mm512_mulhi_epi32_mm512_fixupnan_ps 提供AVX2/AVX-512风格的宽向量兼容接口。
内存接口 _mm_malloc_mm_free 提供对齐内存分配与释放能力。
C++易用性 operator +operator -operator & 在C++下为__m64__m128i__m128__m128d提供重载。

目录结构

# 文档目录
README.md                          # 项目总览
LICENSE                            # 仓库许可证
docs/
└── zh/
    ├── api_reference.md           # API参考
    ├── installation_guide.md      # 安装指南
    ├── quick_start.md             # 快速入门
    └── release_notes.md           # 版本说明

# 代码目录
include/
├── avx.h                          # 公开 intrinsic 接口声明
├── avx2ki.h                       # 总入口头文件
├── avx2ki_core.h                  # 版本与核心接口
├── avx2ki_type.h                  # 类型、枚举、状态码、宏定义
└── operatoroverload.h             # C++ 运算符重载
src/
├── avx2neon/                      # NEON 后端实现
├── avx2sve/                       # SVE 256-bit 后端实现
├── avx2sve512/                    # SVE 512-bit 后端实现
├── common/                        # 公共实现
├── CMakeLists.txt                 # 子目录构建入口
└── unsupport.txt                  # 当前实现文件之一
test/
├── avx2ki/                        # 功能测试与性能测试用例
├── build/                         # Makefile 构建入口
├── common/                        # 测试公共代码
├── gtest-download/                # GoogleTest 下载脚本
├── gtest-parallel/                # 并行测试工具
└── scripts/                       # 数据准备与自动化脚本
build.sh                           # 主构建脚本
CMakeLists.txt                     # 顶层 CMake 配置
config.cmake.in                    # 编译选项与版本配置
avx2kiver.h.in                     # 版本头模板

版本说明书

版本对齐与当前仓库状态说明见《版本说明书》。

环境部署

编译环境、依赖准备、目标库构建与安装说明见《安装指南》。

快速入门

最小示例、版本查询和向量接口使用示例见《快速入门》。

文档

资源名称 资源简介
版本说明书 提供AVX2KI仓库的默认版本、文档更新时间和已知限制。
安装指南 提供AVX2KI安装的依赖、环境变量、构建命令、产物目录和安装方式。
快速入门 提供AVX2KI的最小编译示例、版本查询和Intrinsic调用示例。
API参考 提供AVX2KI的主要头文件、版本结构体、状态码和代表性接口。

免责声明

致 AVX2KI 使用者

  • 本软件仅供调试和开发之用,使用者需自行承担使用风险,并理解以下内容:

    • 数据处理及删除:用户在使用本软件过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防信息泄露。
    • 数据保密与传播:使用者了解并同意不得将通过本软件产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本软件及其开发者概不负责。
    • 用户输入安全性:用户需自行保证输入的命令行的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题,本软件及其开发者概不负责。
  • 免责声明范围:本免责声明适用于所有使用本软件的个人或实体。使用本软件即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本软件。

  • 在使用本软件之前,请谨慎阅读并理解以上免责声明的内容。对于使用本软件所产生的任何问题或疑问,请及时联系开发者。

致数据所有者

如果您不希望您的数据集等信息在 AVX2KI 仓库中被提及,或希望更新相关描述,请在 GitCode 提交 issue,我们将根据您的要求删除或更新相关描述。感谢您的理解与支持。

License

本仓库代码采用 MIT License,详见 LICENSE

除非另有说明,本文档内容与仓库代码一并发布和维护。

贡献声明

欢迎通过Issue或Pull Request反馈问题、补充测试、完善实现或改进文档。若你准备提交代码,建议在提交前至少说明以下内容:

  • 目标后端:avx2neonavx2sveavx2sve512
  • 影响范围:头文件声明、公共实现、测试用例或性能数据
  • 验证方式:功能测试、随机测试、性能测试或业务侧验证

致谢

AVX2KI代码和文档体现了 Kunpeng BoostKit相关工程实践,也依赖社区贡献者对ARM平台SIMD兼容迁移的持续投入。

感谢所有为AVX2KI提交实现、测试、问题反馈和文档改进的开发者。