본문으로 건너뛰기

© 2026 Molayo

llama.cpp헤드라인2026. 05. 09. 06:09

cuda: snake 활성화 연산자 병합 (곱셈, 사인, 제곱, 곱셈, 덧셈) (#22667) cuda: snake 활성화 연산자 병합 (곱셈,

요약

본 기술 기사는 CUDA 환경에서 'snake'라는 복잡한 활성화 연산자(y = x + sin(a*x)^2 * inv_b)를 단일 요소별 커널로 병합하는 과정을 다룹니다. 이를 통해 기존의 여러 개별 연산자로 분해되던 구조를 효율적으로 재작성하여, BigVGAN이나 Vocos 같은 오디오 디코더에서 발생하는 계산 부하를 줄이고 성능을 최적화합니다. 이 작업은 F32, F16, BF16 등 다양한 데이터 타입과 여러 플랫폼(CUDA, CPU, macOS, Linux 등)에 걸쳐 테스트 및 적용되었습니다.

핵심 포인트

  • 복잡한 활성화 연산자 'snake'를 단일 요소별 커널로 병합하여 계산 효율성을 극대화했습니다.
  • y = x + sin(a*x)^2 * inv_b 형태의 연산을 하나의 CUDA kernel로 재작성함으로써, 여러 개의 개별 연산 호출 오버헤드를 제거했습니다.
  • F32, F16, BF16 등 다양한 정밀도와 CPU/GPU 아키텍처를 지원하며 광범위한 플랫폼 호환성을 확보했습니다.
  • 이 최적화는 특히 BigVGAN이나 Vocos 같은 오디오 디코딩 모델의 성능 향상에 직접적으로 기여합니다.

cuda: snake 활성화 연산자 병합 (곱셈, 사인, 제곱, 곱셈, 덧셈) (#22667)
cuda: snake 활성화 연산자 병합 (곱셈, 사인, 제곱, 곱셈, 덧셈)
Add ggml_cuda_op_snake_fused 를 추가하여 F32 / F16 / BF16 템플릿 제공.
The matcher 는 audio decoder 에서 방출하는 naive 5 op 분해 (BigVGAN, Vocos) 를 인식하고 snake 활성화 y = x + sin(a*x)^2 * inv_b 를 단일 elementwise kernel 로 재작성함.
Add test_snake_fuse 를 추가하여 F32 / F16 / BF16 에서 CPU naive 와 CUDA fused 를 비교함.
cuda: @am17an 의 리뷰 피드백 반영
Use ggml_cuda_cast 를 사용하여 F32/F16/BF16 변환 및 kernel_snake 를 snake_kernel 로 리네임하여 upstream conventions 과 일치시킴.
cuda: snake fusion fastdiv on T_len, Suggested-by: @am17an
Update tests/test-backend-ops.cpp
Co-authored-by: Aman Gupta amangupta052@gmail.com
cuda: snake fusion check add->type matches x->type
Address review feedback from @am17an
cuda: snake fusion check add->type matches x->type
Moved for readability (equivalent)
Address review feedback from @am17an
Co-authored-by: Aman Gupta amangupta052@gmail.com
macOS/iOS:
macOS Apple Silicon (arm64)
macOS Apple Silicon (arm64, KleidiAI enabled)
macOS Intel (x64)
iOS XCFramework
Linux:
Ubuntu x64 (CPU)
Ubuntu arm64 (CPU)
Ubuntu s390x (CPU)
Ubuntu x64 (Vulkan)
Ubuntu arm64 (Vulkan)
Ubuntu x64 (ROCm 7.2)
Ubuntu x64 (OpenVINO)
Ubuntu x64 (SYCL FP32)
Ubuntu x64 (SYCL FP16)
Android:
Android arm64 (CPU)
Windows:
Windows x64 (CPU)
Windows arm64 (CPU)
Windows x64 (CUDA 12) - CUDA 12.4 DLLs
Windows x64 (CUDA 13) - CUDA 13.1 DLLs
Windows x64 (Vulkan)
Windows x64 (SYCL)
Windows x64 (HIP)
openEuler:
openEuler x86 (310p)
openEuler x86 (910b, ACL Graph)
openEuler aarch64 (310p)
openEuler aarch64 (910b, ACL Graph)

AI 자동 생성 콘텐츠

본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0