jfalcou/eve

Expressive Vector Engine - SIMD in C++ Goes Brrrr

解决的问题

EVE 是一个高性能的 C++20 库,旨在简化 SIMD(单指令多数据)编程模型。它为多种硬件架构的 SIMD 扩展集提供了基于类型的封装,使开发者无需手动为每个目标编写特定于架构的汇编代码或内建函数,即可在保持高抽象层次的同时编写高效的底层代码。

工作原理

该库利用 C++20 特性——如 Concepts、模板 lambda 和 if constexpr——创建 SIMD 操作的通用接口。它作为现代 CPU 指令集的封装,广泛支持 Intel(SSE、AVX、AVX512)和 ARM(NEON、SVE)架构,同时对 PowerPC(VMX、VSX)提供部分支持。

适用人群

主要面向需要在多个硬件目标上最大化 CPU 吞吐量和性能的高性能计算(HPC)和底层系统编程开发者。

主要亮点

  • 广泛的架构支持:积极支持从 Intel SSE2 到 AVX512 以及 ARM NEON/SVE。
  • 现代 C++ 标准:专为 C++20 设计,充分利用现代设计模式,推动 SIMD API 设计的边界。
  • 高抽象层次:在保持高阶、表达性强的 API 的同时,提供实现高效 SIMD 代码的方式。
  • 研究驱动:作为一项研究项目开发,旨在探索 SIMD 库的最佳设计与实现决策。

相关

  • 项目
  • 项目
  • 项目
  • 项目