jfalcou/eve
Expressive Vector Engine - SIMD in C++ Goes Brrrr
해결하는 문제
EVE는 고성능 C++20 라이브러리로, SIMD(Single Instruction, Multiple Data) 프로그래밍 모델을 단순화하기 위해 설계되었습니다. 다양한 하드웨어 아키텍처를 위한 SIMD 확장 세트에 대한 타입 기반 래퍼를 제공하여, 개발자가 각 타겟에 대해 아키텍처에 특화된 어셈블리 또는 인트린식을 수동으로 작성하지 않고도, 높은 수준의 추상화를 유지하면서 효율적인 저수준 코드를 작성할 수 있도록 합니다.
작동 방식
이 라이브러리는 C++20의 기능—Concepts, 템플릿 람다, if constexpr—을 활용하여 SIMD 연산을 위한 일반적인 인터페이스를 생성합니다. 현대 CPU의 명령 세트를 래핑하는 방식으로 작동하며, Intel(SSE, AVX, AVX512) 및 ARM(NEON, SVE) 아키텍처를 광범위하게 지원하고, PowerPC(VMX, VSX)에 대해서도 부분적으로 지원합니다.
대상 사용자
주로 고성능 컴퓨팅(HPC) 및 저수준 시스템 프로그래밍에 종사하며, 여러 하드웨어 타겟에서 CPU 처리량과 성능을 극대화해야 하는 개발자를 대상으로 합니다.
주요 특징
- 광범위한 아키텍처 지원: Intel SSE2부터 AVX512, ARM NEON/SVE까지 적극적으로 지원.
- 현대적인 C++ 표준: C++20 전용으로 설계되어 현대적인 설계 패턴을 활용하고 SIMD API 설계의 한계를 넘어서고 있습니다.
- 높은 추상화 수준: 효율적인 SIMD 코드를 구현하면서도 고수준이고 표현력이 풍부한 API를 유지할 수 있습니다.
- 연구 기반 개발: SIMD 라이브러리의 최적 설계 및 구현 결정을 탐구하기 위한 연구 프로젝트로 개발되었습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트