google/highway

Performance-portable, length-agnostic SIMD with runtime dispatch

해결하는 문제

Highway는 SIMD(Single Instruction, Multiple Data) 및 벡터 프로그래밍을 실용적이고 이식 가능하게 만들기 위해 설계된 C++ 라이브러리입니다. 특정 명령어 세트마다 핵심 로직을 다시 작성할 필요 없이, 다양한 CPU 아키텍처에서 효율적으로 실행되는 고성능 코드를 작성하는 문제를 해결합니다.

작동 방식

Highway는 CPU 명령어에 직접 매핑되는 이식 가능한 벡터 내장 함수 세트를 제공합니다. 개발자는 아키텍처별 코드를 작성하는 대신 Highway의 함수를 사용하며, 라이브러리가 이를 대상 플랫폼에 적합한 명령어로 매핑합니다. 정적 디스패치(컴파일 타임에 특정 명령어 세트 타겟팅)와 동적 디스패치(런타임에 사용 가능한 최적의 명령어 세트 선택)를 모두 지원합니다.

대상 사용자

이미지 처리, 압축, 비디오 분석, 선형 대수, 암호화, 로봇 공학 등 애플리케이션의 성능 한계를 극대화해야 하는 소프트웨어 엔지니어를 위한 라이브러리입니다.

주요 특징

  • 광범위한 아키텍처 지원: x86, Arm, RISC-V, WebAssembly, IBM Z, LoongArch, POWER를 포함한 7가지 아키텍처를 지원합니다.
  • 성능 향상: 더 적은 명령어를 실행함으로써 에너지 소비를 줄이고 5~10배의 속도 향상을 제공할 수 있습니다.
  • 유연한 배포: 런타임에 최적의 명령어 세트를 선택하여 이기종 클라우드나 클라이언트 장치에서 애플리케이션을 실행할 수 있습니다.
  • 예측 가능한 결과: 컴파일러 자동 벡터화보다 더 강력하고 예측 가능한 대안을 제공합니다.
  • 광범위한 연산 세트: 레거시 데이터 구조와 확장 가능한 벡터를 최적화하기 위한 Gather, MaskedLoad, FixedTag와 같은 도구를 포함합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트