SIMD, AVX

규규·2024년 3월 25일
0

C++

목록 보기
15/21

SIMD

  • Single Instruction Multiple Data
  • Intel/AMD/ARM CPU 에서는 아키텍처 모델에 따라 SIMD 기능을 지원
  • Intel(AMD) : MMX,SSE,SSE2,AVX,AVX2,AVX512F
    • SSE (Streaming SIMD Extensions)
      • 128 비트 레지스터 지원
      • 4개 float, 2개 double 동시 처리
    • AVX (Advanced Vector Extension)
      • 256 비트 레지스터 지원
      • 8개 float, 4 개 double 동시 처리
  • ARM : NEON

구현 방법

  • SIMD 는 직접 어셈블리로 구현하거나, Intrinsic function 을 이용하거나, SIMD 명령어 직접 사용. SIMD 명령어들은 CPU 명령어 임.
  • SISD 보다 30~100% 성능 개선
  • Intrinsic function (내장 함수):
    • inline function 으로 모습은 함수와 동일하지만 어셈블리 명령어와 1:1 로 매칭되어 좀 더 쉽게 SSE 를 이용 할 수 있게 해주는 내장 함수
    • double underscore (__) 로 표시
    • ex:
      • _mm_<intrin_op>_<suffix>
      • __CLREX void__CLREX(void);
      • `MCR MCR2'

출처 :
https://m.blog.naver.com/fs0608/221650925743
https://stonzeteam.github.io/SIMD-%EB%B3%91%EB%A0%AC-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/
https://bab2min.tistory.com/601#:~:text=SSE%EC%97%90%EC%84%9C%EB%8A%94%20128%EB%B9%84%ED%8A%B8%EC%9D%98,%EB%8F%99%EC%8B%9C%EC%97%90%20%EC%B2%98%EB%A6%AC%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.

profile
복습용 저장소

0개의 댓글