Anukari 개발자의 Apple에 보내는 기술적 호소문

2 weeks ago 10

  • GPU 실시간 오디오 시뮬레이터 Anukari가 Apple Silicon macOS 기기에서 예측 가능한 성능을 보장받지 못하는 문제를 설명하며, Apple Metal 팀에 직접 연결되길 요청
  • Anukari는 물리 기반 오디오 합성기로, 오디오 버퍼 블록마다 GPU에서 수백 개의 객체를 통합해야 하며, GPU ALU 성능에 전적으로 의존
  • macOS의 자동 전력/성능 조절 로직이 이 특수한 오디오 워크로드를 잘 인식하지 못해, GPU 클럭이 낮게 유지되고 성능 저하 및 끊김 현상이 발생함
  • 이를 해결하기 위해 “waste makes haste” 전략으로 가짜 부하를 유발해 GPU를 속이는 spin kernel을 도입했지만, M1 이후의 고성능 Mac에서는 실패 가능성이 높아짐
  • 해결책으로는 GPU 명령큐의 실시간 인식 기능 도입 또는 Audio Workgroup 개념을 Metal까지 확장하는 방안 등을 제안함

Anukari란 무엇인가?

  • Anukari실시간 3D 물리 기반 오디오 합성기로, 대규모 스프링-질량 모델을 GPU에서 계산하여 오디오를 생성함
  • 오디오 워크스테이션(DAW)에서 AudioUnit/VST3 형태로 사용되며, 오디오 버퍼 단위로 GPU에 계산을 요청함
  • 계산은 메모리보다는 연산량(=ALU) 중심이며, GPU의 threadgroup memory를 활용해 L1 캐시 수준의 고속 처리를 구현함

성능 문제의 본질

  • macOS는 전력 효율성 중심으로 GPU 클럭을 자동 조절하며, GPU 부하가 낮게 감지되면 클럭을 낮춤
  • Anukari는 짧고 고밀도의 실시간 작업을 반복하는 구조로 인해, macOS가 GPU 부하를 제대로 인식하지 못함
  • 이는 실시간 제약 조건을 만족시키기 위해 필요한 성능을 확보하지 못하게 만듦

증거와 테스트

  • Apple Xcode의 Metal Profiler를 통해 성능 상태별 클럭 차이를 직접 확인
  • Maximum performance 상태에서는 매끄럽게 작동하지만, Minimum 상태에서는 음성 끊김이 발생함

“waste makes haste” 전략

  • GPU 클럭을 강제로 높이기 위해, Anukari는 spin loop 부하 생성용 GPU 작업을 동시에 수행함
  • 이 전략은 M1에서는 효과적이지만, Pro/Max급 칩에서는 오히려 부하가 다른 GPU 코어로 분산되며 실패할 가능성이 있음

제안하는 해결책

  1. Audio Workgroup을 GPU까지 확장하여 실시간 워크로드로 인식되게 하기
  2. Metal API에 실시간 민감도 플래그 추가
  3. (희망적) 이미 존재하는 방법이 있다면 안내받기를 희망

기타 대안 검토 및 한계

  • Game Mode는 전체 프로세스 기반이라 플러그인 형태의 Anukari에는 적용 불가
  • Windows에서는 문제 없음, 클럭 관리가 느슨하거나 설정 제어 가능성 때문
  • 헤징 방식의 멀티 커널 실행은 오디오 지연 증가 및 상태 동기화 문제로 부적절
  • GPU 코드 최적화는 이미 극한까지 수행됨 (FP16 사용, SIMD 그룹 정렬, ALU 최적화 등)

왜 CPU가 아닌 GPU인가?

  • Anukari는 768~1024개 객체의 물리 연산을 초당 48,000번 수행하며, 16중 복성(폴리포니)까지 지원
  • CPU는 계산량과 병렬성 모두에서 감당 불가능함
  • GPU의 ALU, L1 캐시 제어, threadgroup_barrier 병렬 제어 능력이 절대적으로 필요함

Apple이 이 문제를 왜 신경 써야 하는가?

  • Anukari는 소규모 스타트업의 틈새형 제품이지만, 열정적인 유저층유명 아티스트의 관심을 받고 있음
  • Apple Silicon은 이 워크로드를 충분히 처리할 수 있는 성능을 갖추고 있으나, 클럭 조절 정책만 바뀌면 해결 가능

GPU Audio API는 왜 불가능한가?

  • Anukari는 전통적 DSP가 아니라 수치 미분 방정식 통합기, 즉 게임 물리 엔진에 가깝기 때문에 GPU Audio의 추상화 수준과 맞지 않음
  • Metal API를 직접 사용하며, 도메인 특화된 극단적 최적화가 필수임

요청 요약: GPU 오디오를 위해 Metal API 또는 macOS 성능 조절 정책에 실시간 처리 인식 기능을 추가해줄 Apple 엔지니어의 응답을 기다림

Read Entire Article