Hacker News 의견
  • 포터블 SIMD 사용 사례를 볼 수 있는 훌륭한 기사. Zen 3 시스템에서 벤치마크를 재현해보니 동일한 속도 향상을 확인함. M1 mbp에서는 입력 길이 110바이트에서 최대 2배까지 성능 향상이 점진적으로 증가함. x86_64보다는 이득이 적지만 목표를 달성했다고 볼 수 있음. 그러나 Rust가 SIMD 및 포인터 관련 작업, 성능 엔지니어링 전반에 걸쳐 다소 불편한 점이 있음을 확인함.
  • 때로는 C++로 최선을 다해 프로그래밍하려고 해도, SIMD를 사용한 버전이 10배 이상 빠른 성능을 보여주는 경우가 놀랍다. 코드의 이식성은 떨어지지만, 컴파일러가 자동 벡터화를 더 잘 해줬으면 하는 바람이 있음. 어노테이션을 통해 특정 연산의 순서를 재배열할 수 있도록 언어에 지원이 추가되었으면 좋겠음.
  • 컴파일러가 특정 popcount 구현을 단일 명령어로 최적화하지 못했지만, 다른 구현에 대해서는 가능한 경우가 있음을 지적함.
  • _mm256_cvtps_epu32는 AVX2의 명령어가 아니라 AVX-512의 명령어이며, AVX1에서는 정수가 부호 있는 형태로 존재하고 해당 명령어는 _mm256_cvtps_epi32임.
  • 오른쪽에 있는 작은 미니맵이 매우 마음에 듦.
  • ISPC는 C++나 Rust에 SIMD를 추가하는 것보다 낫다고 평가함. 또한, 동적 디스패칭을 지원하는데, 이는 직접 구현하기 까다로운 기능임.
  • fastbase64와 비교했을 때 어떤가에 대한 질문과 함께, 포터블 SIMD 라이브러리에 대한 글쓴이의 낙관적인 태도를 공유하고 싶다는 의견을 제시함.
  • 훌륭한 글로, 스스로 결코 이만큼 똑똑해질 수 없을 것 같다는 인상을 남김.
  • 벡터화되지 않은 popcnt 구현의 첫 번째 예제가 "솔직히 말해서 우스꽝스러운 코드"를 생성한다고 언급되었지만, 네이티브 타겟 CPU에서 릴리스 모드로 컴파일하면 함수가 꽤 괜찮게 벡터화되는 것으로 보임.
  • Rust Simd에 대한 상당히 좋은 시도. 생성된 코드를 검사했을 때 가장 놀라운 특이점은 무엇이었는지에 대한 질문을 제기함.