1 poin oleh GN⁺ 2025-05-07 | 1 komentar | Bagikan ke WhatsApp
  • Anukari, simulator audio real-time berbasis GPU, menjelaskan masalah tidak adanya jaminan performa yang dapat diprediksi pada perangkat Apple Silicon macOS, dan meminta dapat terhubung langsung dengan tim Apple Metal
  • Anukari adalah synthesizer audio berbasis fisika yang harus mengintegrasikan ratusan objek di GPU untuk setiap blok buffer audio, serta sepenuhnya bergantung pada performa GPU ALU
  • Logika penyesuaian daya/performa otomatis di macOS tidak mengenali dengan baik beban kerja audio khusus ini, sehingga clock GPU tetap rendah dan menyebabkan penurunan performa serta gejala putus-putus
  • Untuk mengatasinya, diperkenalkan spin kernel yang memicu beban palsu untuk "menipu" GPU dengan strategi “waste makes haste”, tetapi kemungkinan gagal pada Mac berperforma tinggi setelah M1 makin besar
  • Sebagai solusi, diusulkan antara lain menambahkan kemampuan pengenalan real-time pada GPU command queue atau memperluas konsep Audio Workgroup hingga ke Metal

Apa itu Anukari?

  • Anukari adalah synthesizer audio real-time 3D berbasis fisika yang menghasilkan audio dengan menghitung model pegas-massa berskala besar di GPU
  • Digunakan di audio workstation (DAW) dalam bentuk AudioUnit/VST3, dan meminta komputasi ke GPU dalam satuan buffer audio
  • Komputasinya berpusat pada jumlah operasi (=ALU), bukan memori, dan memanfaatkan threadgroup memory milik GPU untuk mewujudkan pemrosesan cepat setingkat cache L1

Inti masalah performa

  • macOS secara otomatis menyesuaikan clock GPU dengan fokus pada efisiensi daya, dan akan menurunkannya bila beban GPU terdeteksi rendah
  • Karena Anukari berulang kali menjalankan pekerjaan real-time yang singkat namun padat, macOS gagal mengenali beban GPU-nya dengan tepat
  • Hal ini membuat performa yang dibutuhkan untuk memenuhi kendala real-time tidak dapat dicapai

Bukti dan pengujian

  • Melalui Metal Profiler di Apple Xcode, perbedaan clock pada tiap status performa dapat dikonfirmasi secara langsung
  • Pada status Maximum performance sistem berjalan mulus, tetapi pada status Minimum terjadi audio putus-putus

Strategi “waste makes haste”

  • Untuk memaksa clock GPU naik, Anukari secara bersamaan menjalankan tugas GPU pembuat beban spin loop
  • Strategi ini efektif pada M1, tetapi pada chip kelas Pro/Max justru berpotensi gagal karena beban tersebar ke core GPU lain

Solusi yang diusulkan

  1. Memperluas Audio Workgroup hingga ke GPU agar dikenali sebagai beban kerja real-time
  2. Menambahkan flag sensitivitas real-time ke Metal API
  3. (Sebagai harapan) bila sudah ada cara yang tersedia, mereka ingin mendapatkan panduan

Tinjauan alternatif lain dan keterbatasan

  • Game Mode berbasis seluruh proses, sehingga tidak bisa diterapkan pada Anukari yang berbentuk plugin
  • Di Windows tidak ada masalah, kemungkinan karena manajemen clock lebih longgar atau pengaturan bisa dikendalikan
  • Eksekusi multi-kernel dengan metode hedging tidak cocok karena menambah latensi audio dan menimbulkan masalah sinkronisasi status
  • Optimasi kode GPU sudah dilakukan hingga batas ekstrem (penggunaan FP16, penyelarasan SIMD group, optimasi ALU, dll.)

Mengapa GPU, bukan CPU?

  • Anukari melakukan komputasi fisika untuk 768~1024 objek sebanyak 48.000 kali per detik, dan mendukung hingga 16-voice polyphony
  • CPU tidak mampu menanganinya, baik dari sisi jumlah komputasi maupun paralelisme
  • Kemampuan GPU ALU, kontrol cache L1, dan kontrol paralel threadgroup_barrier mutlak diperlukan

Mengapa Apple perlu peduli pada masalah ini?

  • Anukari memang produk niche dari startup kecil, tetapi memiliki basis pengguna yang antusias dan menarik perhatian artis ternama
  • Apple Silicon memiliki performa yang cukup untuk menangani beban kerja ini, dan masalah ini bisa diselesaikan hanya dengan perubahan kebijakan pengaturan clock

Mengapa GPU Audio API tidak memungkinkan?

  • Karena Anukari bukan DSP tradisional melainkan integrator persamaan diferensial numerik, sehingga lebih mirip mesin fisika gim dan tidak cocok dengan tingkat abstraksi GPU Audio
  • Ia langsung menggunakan Metal API, dan optimasi ekstrem yang sangat spesifik domain merupakan keharusan

Ringkasan permintaan: Mereka menunggu tanggapan dari insinyur Apple yang dapat menambahkan kemampuan pengenalan pemrosesan real-time ke Metal API atau kebijakan pengaturan performa macOS demi audio GPU.

1 komentar

 
GN⁺ 2025-05-07
Pendapat Hacker News
  • Halo semuanya, saya telah melakukan percakapan yang sangat produktif dengan orang yang tepat di tim Metal. Terima kasih telah membantu menarik perhatian Apple. Saya sama sekali tidak menyangka akan mendapat dukungan sebanyak ini

    • Mungkin ada yang sudah melihat posting Show HN tentang Anukari
    • Dalam thread itu, topik tentang performa macOS muncul. Pada dasarnya, Anukari sebagian besar berjalan dengan baik di Apple Silicon, terutama pada perangkat keras M1 model dasar. Semua pengujian dilakukan pada M1 dasar dan hasilnya sangat baik. Perangkat kerasnya luar biasa
    • Namun, agar ini bisa berjalan, saya harus menerapkan solusi tidak lazim yang membuat macOS menaikkan kecepatan clock GPU agar pemrosesan audio cukup cepat. Heuristik umum macOS untuk status performa GPU tidak memahami beban kerja Anukari yang tidak biasa
    • Bagaimanapun, saya sempat mencatat seluruh situasi secara rinci agar bisa meminta bantuan untuk menghubungi orang yang tepat di Apple, mungkin seseorang yang mengerjakan API Metal
    • Mohon bantuannya :)
  • Saya penasaran dengan asal-usul nama Anukari

  • Saya punya pengalaman dengan dua perusahaan terkenal yang memiliki aplikasi sangat terkenal di Apple App Store

    • Tim di Apple yang berbicara dengan kami sama sekali tidak tertarik pada masalah kami. Namun, mereka sering mengundang kami ke kantor untuk membahas fitur-fitur terbaru yang akan mereka presentasikan di WWDC. Keterlibatan kami dengan mereka selalu dimulai dan berakhir seperti itu. Kami harus menghabiskan tiket dukungan teknis hanya untuk mendapatkan wawasan tentang mengapa perangkat lunak mereka yang penuh bug tidak berfungsi
    • Hubungan pengembang Apple bukanlah orang-orang yang serius
  • Profiler Metal memiliki fitur yang sangat berguna: Anda dapat memilih "status performa" Metal saat memprofilkan aplikasi. Ini tidak bisa dikonfigurasi di luar profiler

    • Mungkin ada API privat untuk ini. Bisa jadi lebih mudah menempuh jalur rekayasa balik. Jika tidak memerlukan hak khusus
  • Masalah dengan mengekspos API untuk ini adalah terlalu banyak pengembang akan selalu memaksa status performa tertinggi. Saya tidak tahu apakah ada cara yang baik untuk mencegah itu sambil tetap mempertahankan API

  • Cara terbaik untuk menyelesaikan masalah ini:

    • Cari insinyur yang paling memahami masalah ini melalui video WWDC
    • Kirim email langsung dengan format ini: mthomson@apple.com (Michael Thomson)
  • Jangan lewatkan tautan yang disisipkan di paragraf kedua dari belakang. Itu tautan ke demo yang dibuat oleh Mick Gordon. @anukarimusic menanggapinya

    • Pada hari kedua, itu sudah sepenuhnya menghancurkan semua demo yang saya buat, dan saya telah menggunakannya setiap hari sejak itu
  • Sebagai tambahan, Anukari seharusnya merilis paket suara Mick Gordon dan berbagi pendapatan dengannya. Orang itu sedang membuat sesuatu yang luar biasa. Demonya hebat. Berkolaborasi dengan artis saat Anda memiliki alat yang kuat adalah bisnis yang bagus dan baik untuk dunia. Jika Anda menyukai Mick Gordon. Saya menyukainya

  • Saya tidak membutuhkan aplikasi ini, tetapi ini benar-benar keren. Aplikasi seperti ini mengembalikan "kesenangan" ke dunia komputasi. Bukan berarti sekarang tidak menyenangkan, tetapi ini mengingatkan pada masa lalu ketika lebih banyak program grafis dan eksperimental beredar. Bahkan sampai demoscene