llama.cpp 프로젝트가 빌드 b111184를 출시하여 Metal 백엔드를 위한 새로운 Fast Walsh-Hadamard Transform (FWHT) 커널을 도입했으며, 이는 512보다 큰 블록 너비를 지원합니다. 이전에는 Metal FWHT 구현이 64에서 512 사이의 너비로 제한되었습니다.

  • 새로운 커널은 스레드 그룹당 하나의 행과 256개의 스레드를 사용하여 1024부터 8192까지의 너비를 처리하며, 더 넓은 블록이 레지스터에만 의존하는 대신 스레드 그룹 메모리를 활용할 수 있게 합니다.
  • 64에서 512 사이의 너비는 기존 simdgroup 커널을 계속 사용하며, 새로운 광폭 커널은 F32와 F16 소스 타입 모두를 지원합니다.
  • 이 구현에는 불충분한 스레드 그룹 메모리를 가진 장치에서의 중단 오류를 방지하기 위해 장치 제한에 대한 크기 확인이 포함되어 있으며, 너비 8192에서 32 KB에 도달하는 float[N]의 메모리를 할당합니다.
  • M5 Pro 장치에서 백엔드 작동 테스트는 MUL_MAT_HADAMARD 및 MUL_MAT에 대한 모든 검사를 통과했습니다.

이 업데이트를 통해 llama.cpp는 Metal 백엔드 내에서 더 큰 블록 크기에 대해 Hadamard 곱 연산을 수행할 수 있게 되었으며, Apple Silicon 하드웨어에서 지원되는 텐서 차원의 범위가 확장되었습니다.