C++26의 std::simd 라이브러리, 성능 문제로 논란...벡터 연산 성능이 기대에 미치지 못해
C++26의 std::simd이 예상과 달리 성능이 떨어지고 기능도 제한적이다.
[한국정보기술신문] C++26에 추가된 std::simd 라이브러리가 기술 커뮤니티로부터 비판받고 있다. 이 라이브러리는 개발자가 SIMD 코드를 한 번 작성하면 서로 다른 프로세서 아키텍처에서 컴파일할 수 있도록 설계됐다. AVX2, AVX-512, NEON, SVE 등 다양한 아키텍처를 지원한다는 것이 장점이었다. 하지만 실제 성능은 예상을 크게 밑돌았다.

심각한 성능 저하
std::simd의 가장 큰 문제는 컴파일 속도와 실행 속도 모두에서 성능이 떨어진다는 점이다. 동등한 스칼라 코드 대비 컴파일이 10배 느리다. 더 심각한 것은 자동 벡터화된 스칼라 루프보다도 느리다는 사실이다. 라이브러리가 기본값으로 128비트 SSE 너비를 사용하기 때문에 최신 하드웨어에서도 성능이 2.4배 느릴 수 있다. 프로세서의 진정한 성능을 활용하지 못한다는 의미다.
제한된 기능성
라이브러리가 지원하는 것은 단순히 요소별 연산뿐이다. 실제 SIMD 코드에서 중요한 작업을 수행할 수 없다. 셔플, 순열, 크로스 레인 연산, 너비 특정 산술 같은 기능이 빠졌다. 오디오 코덱이나 이미지 처리 같은 실제 프로덕션 환경에서 필요한 작업들을 표현할 방법이 없다는 뜻이다. 템플릿 기반 래핑으로 인해 컴파일러가 최적화를 볼 수 없고, 정렬 정보가 함수 경계를 넘어 전달되지 않는다.
기존 대안이 더 효율적
시장에는 더 나은 대안들이 이미 존재한다. 구글의 Highway, SIMDe, xsimd, EVE, ISPC 같은 도구들이 각각의 경우에 더 효과적으로 이식성 문제를 해결한다. C++ 위원회가 10년을 들여 개발한 std::simd은 기대보다 늦게 도착했고, 그 사이 더 좋은 솔루션들이 나타났다. 이미 SIMD을 다루고 있는 프로젝트에서 std::simd으로 전환할 이유가 거의 없다.
성능 개선과 기능 확장을 위해서는 라이브러리 구조 자체의 변경이 필요하다. 하지만 이는 단기간에 해결되기 어려워 보인다. 개발자들은 당분간 기존 SIMD 라이브러리를 계속 사용할 것으로 예상된다.
한국정보기술신문 정보기술분과 이지후 기자 news@kitpa.org











