**인텔 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 |