C++

Intel Intrinsics SIMD

park__ 2024. 12. 10. 08:48

**인텔 SIMD(Single Instruction, Multiple Data)**는 Intel 프로세서에서 지원하는 병렬 연산 기술로, 하나의 명령어를 사용하여 여러 데이터 요소를 동시에 처리하는 방식입니다. SIMD는 데이터 병렬성을 활용하여 벡터화(vectorization)를 통해 성능을 크게 향상시키는 데 사용

 

가이드 : https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html

 

Intel® Intrinsics Guide

Intel® Intrinsics Guide includes C-style functions that provide access to other instructions without writing assembly code.

www.intel.com

 

#include <immintrin.h>
#include <stdio.h>

int main() {
    // 두 벡터의 데이터를 초기화
    float a[8] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0};
    float b[8] = {8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0};
    float c[8];

    // AVX 명령어로 벡터를 로드
    __m256 vec_a = _mm256_loadu_ps(a);
    __m256 vec_b = _mm256_loadu_ps(b);

    // 두 벡터를 더함
    __m256 vec_c = _mm256_add_ps(vec_a, vec_b);

    // 결과를 저장
    _mm256_storeu_ps(c, vec_c);

    // 결과 출력
    for (int i = 0; i < 8; i++) {
        printf("c[%d] = %f\n", i, c[i]);
    }

    return 0;
}

'C++' 카테고리의 다른 글

C++ virtual 내부 작동 방식  (0) 2024.12.14
register c++  (0) 2024.12.13
OpenMP 란  (0) 2024.12.10
ZeroMQ 란  (0) 2024.12.10
Chrono 라이브러리 기본 시간 측정  (0) 2024.12.09