L’appel technique d’un développeur d’Anukari à Apple
(anukari.com)- Anukari, un simulateur audio temps réel sur GPU, explique le problème d’absence de performances prévisibles garanties sur les appareils Apple Silicon sous macOS, et demande à être mis directement en relation avec l’équipe Apple Metal
- Anukari est un synthétiseur audio basé sur la physique qui doit intégrer des centaines d’objets sur le GPU à chaque bloc de tampon audio, et dépend entièrement des performances ALU du GPU
- La logique automatique de réglage puissance/performances de macOS reconnaît mal cette charge audio particulière, ce qui maintient une fréquence GPU basse et provoque des baisses de performances et des coupures audio
- Pour y remédier, un spin kernel destiné à tromper le GPU en générant une fausse charge a été introduit selon la stratégie « waste makes haste », mais il risque davantage d’échouer sur les Mac hautes performances depuis la puce M1
- Parmi les solutions proposées figurent l’ajout d’une reconnaissance temps réel aux files de commandes GPU ou l’extension du concept d’Audio Workgroup à Metal
Qu’est-ce qu’Anukari ?
- Anukari est un synthétiseur audio 3D temps réel basé sur la physique, qui génère du son en calculant sur GPU de grands modèles masse-ressort
- Il est utilisé dans les stations de travail audio (DAW) sous forme d’AudioUnit/VST3, et demande des calculs au GPU à l’échelle du tampon audio
- Les calculs sont davantage centrés sur le volume d’opérations (= ALU) que sur la mémoire, et exploitent la threadgroup memory du GPU pour obtenir un traitement rapide au niveau du cache L1
La nature du problème de performances
- macOS ajuste automatiquement la fréquence du GPU en privilégiant l’efficacité énergétique, et réduit cette fréquence si la charge GPU est détectée comme faible
- Anukari repose sur une structure qui répète des travaux temps réel courts mais très denses, si bien que macOS ne reconnaît pas correctement la charge GPU
- Cela empêche d’obtenir les performances nécessaires pour respecter les contraintes du temps réel
Preuves et tests
- Les écarts de fréquence selon l’état de performance ont été observés directement via le Metal Profiler de Xcode d’Apple
- En état Maximum performance, tout fonctionne de façon fluide, tandis qu’en état Minimum, des coupures audio surviennent
La stratégie « waste makes haste »
- Pour forcer une hausse de la fréquence GPU, Anukari exécute en parallèle des travaux GPU générant une charge de spin loop
- Cette stratégie est efficace sur M1, mais sur les puces de classe Pro/Max, la charge peut au contraire être répartie sur d’autres cœurs GPU et échouer
Solutions proposées
- Étendre Audio Workgroup jusqu’au GPU afin que la charge soit reconnue comme un workload temps réel
- Ajouter à l’API Metal un indicateur de sensibilité au temps réel
- (Avec espoir) Recevoir des indications s’il existe déjà une méthode pour cela
Autres alternatives envisagées et limites
- Game Mode fonctionne à l’échelle du processus complet, et ne s’applique donc pas à Anukari sous forme de plugin
- Il n’y a pas de problème sous Windows, probablement en raison d’une gestion plus souple des fréquences ou de la possibilité de contrôler les réglages
- L’exécution multi-kernel avec couverture de risque est inadaptée en raison de l’augmentation de la latence audio et des problèmes de synchronisation d’état
- L’optimisation du code GPU a déjà été poussée à l’extrême (
FP16, alignement des groupes SIMD, optimisation ALU, etc.)
Pourquoi le GPU plutôt que le CPU ?
- Anukari effectue des calculs physiques sur 768 à 1024 objets 48 000 fois par seconde, avec une prise en charge allant jusqu’à 16 voix de polyphonie
- Le CPU ne peut pas suivre, ni en volume de calcul ni en parallélisme
- Les capacités du GPU en ALU, contrôle du cache L1 et contrôle parallèle via
threadgroup_barriersont absolument nécessaires
Pourquoi Apple devrait-il s’y intéresser ?
- Anukari est un produit de niche d’une petite startup, mais il bénéficie d’une communauté d’utilisateurs passionnés et de l’intérêt d’artistes connus
- Apple Silicon dispose des performances suffisantes pour traiter cette charge, et un simple changement de politique de réglage des fréquences pourrait suffire à résoudre le problème
Pourquoi une GPU Audio API n’est-elle pas envisageable ?
- Anukari n’est pas un DSP traditionnel mais un intégrateur d’équations différentielles numériques, donc plus proche d’un moteur physique de jeu vidéo, ce qui ne correspond pas au niveau d’abstraction de GPU Audio
- Il utilise directement l’API Metal, et une optimisation extrême, spécifique au domaine, est indispensable
Résumé de la demande : l’auteur attend une réponse d’ingénieurs d’Apple pour ajouter à l’API Metal ou à la politique de réglage des performances de macOS une capacité de reconnaissance des traitements temps réel.
1 commentaires
Commentaire Hacker News
Salut à tous, j’ai eu une conversation très productive avec la bonne personne de l’équipe Metal. Merci de m’avoir aidé à attirer l’attention d’Apple. Je ne m’attendais absolument pas à recevoir autant de soutien
Je suis curieux de connaître l’origine du nom Anukari
J’ai de l’expérience avec deux entreprises bien connues ayant des applications très populaires sur l’Apple App Store
Le profiler Metal possède une fonctionnalité très utile : on peut sélectionner un "état de performance" Metal pendant le profilage de l’application. Cela ne peut pas être configuré en dehors du profiler
Le problème avec l’exposition d’une API pour cela, c’est que trop de développeurs forceraient en permanence l’état de performance maximal. Je ne sais pas s’il existe un bon moyen d’éviter cela tout en conservant l’API
La meilleure façon de résoudre ce problème :
Ne manquez pas le lien glissé dans l’avant-dernier paragraphe. C’est un lien vers une démo réalisée par Mick Gordon. @anukarimusic y répond
En plus, Anukari devrait sortir un sound pack Mick Gordon et partager les revenus avec lui. Ce type crée des choses incroyables. Sa démo est excellente. Collaborer avec des artistes quand on a un outil puissant est bon pour le business et bon pour le monde. Si vous aimez Mick Gordon. Moi oui
Je n’ai pas besoin de cette app, mais elle est vraiment géniale. Ce genre d’app redonne du "fun" à l’informatique. Non pas qu’il n’y en ait plus aujourd’hui, mais cela me rappelle le bon vieux temps où il circulait davantage de programmes graphiques et expérimentaux. Même la demoscene