SIMD(단일 명령 다중 데이터) (SIMD (Single Instruction, Multiple Data))
쉽게 풀면
SIMD는 같은 계산을 여러 데이터에 한꺼번에 적용하는 방법이다. 예를 들어 숫자 4개를 각각 2배로 만들어야 한다면, 보통은 곱셈을 네 번 반복해야 하지만 SIMD를 지원하는 하드웨어는 한 번의 명령으로 네 개를 동시에 곱할 수 있다. GPU가 대규모로 이 방식을 활용하는 대표적인 예이며, 최신 CPU에도 SIMD 전용 명령어 집합(AVX 등)이 들어 있어 이미지 처리나 신호 처리 같은 반복 연산을 빠르게 만든다.
왜 중요한가
SIMD는 하드웨어의 연산 자원을 효율적으로 활용해 처리량을 높이는 근본적인 병렬화 기법이기 때문에, 고성능 컴퓨팅·이미지 처리·딥러닝 추론 최적화 등 계산량이 많은 연구 분야에서 성능 개선의 핵심 요소로 다뤄집니다. 특히 대규모 데이터에 동일한 연산을 반복하는 딥러닝 워크로드와 신호 처리 알고리즘은 SIMD 벡터화 여부가 실제 실행 속도에 큰 영향을 주므로, 시스템·아키텍처 논문에서 최적화 기법의 하나로 빈번히 언급됩니다.
논문에서는 이렇게 쓰입니다
CPU가 지원하는 SIMD 명령어 집합을 활용해 여러 숫자의 곱셈과 덧셈을 한 번에 처리하도록 코드를 최적화했다는 뜻이다.
모바일 프로세서에 내장된 SIMD 명령어 집합을 이용해 합성곱 연산을 병렬로 처리함으로써 추론 속도를 개선했다는 의미이다.
염기서열 비교와 같은 반복 연산을 SIMD 병렬 처리로 바꾸어 대규모 생물정보학 연산의 속도를 높였다는 뜻이다.
조금 더 깊게 보면
SIMD는 컴파일러가 반복문을 자동으로 벡터화하는 자동 벡터화와, 개발자가 직접 SIMD 내장 함수를 사용하는 수동 벡터화로 구현되며, 데이터가 메모리에 연속적으로 정렬되어 있을수록 벡터화 효율이 높아집니다. CPU의 AVX·SSE, ARM의 NEON, GPU의 워프(warp) 단위 실행 등은 모두 넓은 의미에서 SIMD 개념을 하드웨어 수준에서 구현한 사례로 볼 수 있으며, 분기(branch)가 많은 코드는 SIMD 이득을 얻기 어렵다는 점도 함께 논의되는 경우가 많습니다.
주의할 점
SIMD의 이득을 얻으려면 컴파일러나 라이브러리가 코드를 벡터화할 수 있어야 하며, 데이터 접근 패턴이 불규칙하면 그 효과가 줄어든다.