---
title: AVX2KI介绍
description: "<!--## 最新消息-->"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/avx2ki/README.md
sourcePath: /source/zh/kunpengaccel/system-lib/avx2ki/README.md
indexId: bae76269ff0020280dcc95620d8a5bd6b648b49d0ac500c02f3945593dfabb1d51
---
# 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`提供重载。 |

## 目录结构

```text
# 文档目录
README.md                          # 项目总览
LICENSE                            # 仓库许可证
docs/
└── zh/
    ├── api_reference.md           # API参考
    ├── installation_guide.md      # 安装指南
    ├── quick_start.md             # 快速入门
    └── release_note.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                     # 版本头模板
```

## 版本说明书

版本对齐与当前仓库状态说明请参见《[版本说明书](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/avx2ki/docs/zh/release_note.md)》。

## 环境部署

编译环境、依赖准备、目标库构建与安装说明请参见《[安装指南](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/avx2ki/docs/zh/installation_guide.md)》。

## 快速入门

最小示例、版本查询和向量接口使用示例请参见《[快速入门](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/avx2ki/docs/zh/quick_start.md)》。

## 文档

| 资源名称 | 资源简介 |
| -- | -- |
| [版本说明书](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/avx2ki/docs/zh/release_note.md) | 提供AVX2KI仓库的默认版本、文档更新时间和已知限制。 |
| [安装指南](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/avx2ki/docs/zh/installation_guide.md) | 提供AVX2KI安装的依赖、环境变量、构建命令、产物目录和安装方式。 |
| [快速入门](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/avx2ki/docs/zh/quick_start.md) | 提供AVX2KI的最小编译示例、版本查询和Intrinsic调用示例。 |
| [API参考](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/avx2ki/docs/zh/api_reference.md) | 提供AVX2KI的主要头文件、版本结构体、状态码和代表性接口。 |

## 免责声明

**致AVX2KI使用者**

- 本软件仅供调试和开发之用，使用者需自行承担使用风险，并理解以下内容：
  
  - 数据处理及删除：用户在使用本软件过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据，以防信息泄露。
  - 数据保密与传播：使用者了解并同意不得将通过本软件产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果，本软件及其开发者概不负责。
  - 用户输入安全性：用户需自行保证输入的命令行的安全性，并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题，本软件及其开发者概不负责。

- 免责声明范围：本免责声明适用于所有使用本软件的个人或实体。使用本软件即表示您同意并接受本声明的内容，并愿意承担因使用该功能而产生的风险和责任，如有异议请停止使用本软件。
- 在使用本软件之前，请**谨慎阅读并理解以上免责声明的内容**。对于使用本软件所产生的任何问题或疑问，请及时联系开发者。

**致数据所有者**

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

## License

本仓库代码采用MIT License，详见 [LICENSE](https://gitcode.com/boostkit/avx2ki/blob/master/LICENSE)。

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

## 贡献声明

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

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

## 致谢

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

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