Seruan teknis dari pengembang Anukari kepada Apple
(anukari.com)- 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
- Memperluas Audio Workgroup hingga ke GPU agar dikenali sebagai beban kerja real-time
- Menambahkan flag sensitivitas real-time ke Metal API
- (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_barriermutlak 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
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
Saya penasaran dengan asal-usul nama Anukari
Saya punya pengalaman dengan dua perusahaan terkenal yang memiliki aplikasi sangat terkenal di Apple App Store
Profiler Metal memiliki fitur yang sangat berguna: Anda dapat memilih "status performa" Metal saat memprofilkan aplikasi. Ini tidak bisa dikonfigurasi di luar profiler
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:
Jangan lewatkan tautan yang disisipkan di paragraf kedua dari belakang. Itu tautan ke demo yang dibuat oleh Mick Gordon. @anukarimusic menanggapinya
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