simdvectorizationdata-parallelism

SIMD와 데이터 병렬성을 설명해 주세요

예상 시간
7
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

SIMD와 멀티스레딩은 어떻게 다른가요?

부가 설명

반복문에서 배열의 모든 원소에 같은 값을 더하는 코드를 생각하면 SIMD가 잘 맞습니다. 원소 하나씩 더하는 대신 여러 원소를 묶어 한 명령으로 처리할 수 있습니다. CPU 코어를 여러 개 쓰는 병렬성과는 다르게, 한 코어 안의 vector 연산 능력을 활용하는 쪽에 가깝습니다.

다만 모든 코드가 자동으로 빨라지지는 않습니다. 데이터 정렬, 연속 메모리 배치, 분기 여부, 의존성에 영향을 받습니다. 컴파일러가 자동 vectorization을 해 주기도 하지만, 성능이 중요한 곳에서는 데이터 구조를 SIMD 친화적으로 바꾸는 판단이 필요합니다.

한 줄 정리

SIMD는 같은 연산을 여러 데이터에 한 번에 적용해 반복 계산의 상수 비용을 줄이는 방식입니다.