1 points par GN⁺ 2025-05-07 | 1 commentaires | Partager sur WhatsApp
  • 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

  1. Étendre Audio Workgroup jusqu’au GPU afin que la charge soit reconnue comme un workload temps réel
  2. Ajouter à l’API Metal un indicateur de sensibilité au temps réel
  3. (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_barrier sont 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

 
GN⁺ 2025-05-07
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

    • Certains d’entre vous ont peut-être vu le post Show HN sur Anukari
    • Dans ce fil, le sujet des performances sur macOS est apparu. En gros, Anukari fonctionne très bien sur Apple Silicon, en particulier sur le matériel M1 de base. J’ai effectué tous mes tests sur un M1 de base et cela marche à merveille. Ce matériel est stupéfiant
    • Cependant, pour que cela fonctionne, j’ai dû mettre en place une solution anormale afin que macOS augmente la fréquence d’horloge du GPU pour permettre un traitement audio suffisamment rapide. Les heuristiques habituelles de macOS pour les états de performance du GPU ne comprennent pas la charge de travail atypique d’Anukari
    • Quoi qu’il en soit, j’ai enfin eu le temps de documenter toute la situation en détail afin de pouvoir demander de l’aide pour entrer en contact avec la bonne personne chez Apple, probablement quelqu’un qui travaille sur l’API Metal
    • Je demande votre aide :)
  • 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

    • Les équipes d’Apple avec lesquelles nous avons parlé ne se souciaient absolument pas de nos problèmes. En revanche, elles nous invitaient souvent dans leurs bureaux pour discuter des dernières fonctionnalités qu’elles allaient présenter à la WWDC. Notre relation avec eux commençait et se terminait toujours ainsi. Nous devions utiliser des tickets de support technique pour obtenir le moindre éclairage sur les raisons pour lesquelles leurs logiciels bogués ne fonctionnaient pas
    • Les relations développeurs d’Apple ne sont pas des gens sérieux
  • 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

    • Il existe probablement une API privée pour cela. Il sera peut-être plus simple de passer par la rétro-ingénierie. À condition qu’aucun droit particulier ne soit nécessaire
  • 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 :

    • Trouver l’ingénieur qui connaît le mieux le sujet via les vidéos WWDC
    • Lui envoyer directement un email sous ce format : mthomson@apple.com (Michael Thomson)
  • 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

    • Dès le deuxième jour, cela avait déjà complètement pulvérisé toutes les démos que j’avais faites, et je m’en sers tous les jours depuis
  • 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