1 पॉइंट द्वारा GN⁺ 2025-05-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • GPU रीयल-टाइम ऑडियो सिम्युलेटर Anukari ने यह समझाया है कि Apple Silicon macOS डिवाइसों पर उसे पूर्वानुमेय प्रदर्शन की गारंटी नहीं मिल रही, और Apple Metal टीम से सीधे संपर्क की मांग की है
  • Anukari एक physics-based ऑडियो synthesizer है, जिसे हर ऑडियो बफ़र ब्लॉक पर GPU में सैकड़ों ऑब्जेक्ट्स को इंटीग्रेट करना पड़ता है, और यह पूरी तरह GPU ALU प्रदर्शन पर निर्भर है
  • macOS का ऑटोमैटिक पावर/परफॉर्मेंस कंट्रोल लॉजिक इस विशेष ऑडियो वर्कलोड को ठीक से पहचान नहीं पाता, जिससे GPU clock कम बनी रहती है और प्रदर्शन गिरावट तथा ऑडियो कटने-फटने जैसी समस्या आती है
  • इसे हल करने के लिए “waste makes haste” रणनीति के तहत नकली लोड पैदा कर GPU को धोखा देने वाला spin kernel जोड़ा गया, लेकिन M1 के बाद के हाई-परफॉर्मेंस Mac पर इसके असफल होने की आशंका बढ़ रही है
  • समाधान के तौर पर GPU command queue में रीयल-टाइम पहचान क्षमता जोड़ना या Audio Workgroup की अवधारणा को Metal तक बढ़ाना जैसी बातें प्रस्तावित की गई हैं

Anukari क्या है?

  • Anukari एक रीयल-टाइम 3D physics-based ऑडियो synthesizer है, जो बड़े spring-mass models की गणना GPU पर करके ऑडियो बनाता है
  • इसे ऑडियो वर्कस्टेशन (DAW) में AudioUnit/VST3 के रूप में इस्तेमाल किया जाता है, और यह ऑडियो बफ़र इकाई के हिसाब से GPU से गणना करवाता है
  • गणना memory से अधिक compute (=ALU) केंद्रित है, और GPU की threadgroup memory का उपयोग करके L1 cache स्तर की तेज प्रोसेसिंग हासिल की जाती है

प्रदर्शन समस्या की असल प्रकृति

  • macOS पावर एफिशिएंसी को प्राथमिकता देते हुए GPU clock को अपने-आप समायोजित करता है, और जब GPU लोड कम महसूस होता है तो clock नीचे कर देता है
  • Anukari की संरचना छोटे लेकिन बहुत घने रीयल-टाइम कामों को बार-बार चलाने वाली है, इसलिए macOS GPU लोड को ठीक से पहचान नहीं पाता
  • इसका नतीजा यह है कि रीयल-टाइम सीमाओं को पूरा करने के लिए जरूरी प्रदर्शन नहीं मिल पाता

प्रमाण और परीक्षण

  • Apple Xcode के Metal Profiler के जरिए अलग-अलग performance states में clock का फर्क सीधे देखा गया
  • Maximum performance state में यह स्मूद चलता है, लेकिन Minimum state में ऑडियो रुक-रुक कर चलने लगता है

“waste makes haste” रणनीति

  • GPU clock को जबरन ऊपर रखने के लिए, Anukari spin loop लोड बनाने वाला GPU काम साथ में चलाता है
  • यह रणनीति M1 पर असरदार है, लेकिन Pro/Max श्रेणी के chips में लोड दूसरे GPU cores पर बंट जाने से इसके विफल होने की संभावना है

प्रस्तावित समाधान

  1. Audio Workgroup को GPU तक बढ़ाया जाए, ताकि इसे रीयल-टाइम वर्कलोड के रूप में पहचाना जा सके
  2. Metal API में रीयल-टाइम sensitivity flag जोड़ा जाए
  3. (आशावादी रूप से) अगर कोई तरीका पहले से मौजूद है, तो उसके बारे में मार्गदर्शन मिले

अन्य विकल्पों की समीक्षा और सीमाएँ

  • Game Mode पूरे process पर आधारित है, इसलिए plugin रूप में चलने वाले Anukari पर लागू नहीं होता
  • Windows में यह समस्या नहीं है, संभवतः clock management के अधिक ढीले होने या settings control उपलब्ध होने के कारण
  • hedging शैली में multi-kernel execution ऑडियो latency बढ़ाने और state synchronization समस्याओं के कारण उपयुक्त नहीं है
  • GPU code optimization पहले ही अपनी सीमा तक की जा चुकी है (FP16 उपयोग, SIMD group alignment, ALU optimization आदि)

CPU नहीं, GPU क्यों?

  • Anukari 768~1024 ऑब्जेक्ट्स की physics गणनाएँ प्रति सेकंड 48,000 बार चलाता है, और 16-voice polyphony तक सपोर्ट करता है
  • CPU इस गणनात्मक भार और parallelism, दोनों को संभाल नहीं सकता
  • GPU के ALU, L1 cache control, threadgroup_barrier आधारित parallel control की क्षमता बिल्कुल जरूरी है

Apple को इस समस्या की परवाह क्यों करनी चाहिए?

  • Anukari एक छोटे startup का niche product है, लेकिन इसे समर्पित यूज़र समुदाय और प्रसिद्ध artists की रुचि मिल रही है
  • Apple Silicon में इस वर्कलोड को संभालने लायक पर्याप्त प्रदर्शन है, लेकिन सिर्फ clock control policy बदलने से समस्या सुलझ सकती है

GPU Audio API क्यों संभव नहीं है?

  • Anukari पारंपरिक DSP नहीं, बल्कि numerical differential equation integrator है, यानी यह game physics engine के ज्यादा करीब है, इसलिए GPU Audio की abstraction level से मेल नहीं खाता
  • यह सीधे Metal API का उपयोग करता है, और domain-specific अत्यधिक optimization अनिवार्य है

अनुरोध का सार: GPU ऑडियो के लिए Metal API या macOS performance control policy में रीयल-टाइम प्रोसेसिंग पहचान क्षमता जोड़ने को लेकर Apple इंजीनियरों की प्रतिक्रिया का इंतजार है

1 टिप्पणियां

 
GN⁺ 2025-05-07
Hacker News राय
  • सब लोग नमस्कार, मेरी Metal टीम के सही व्यक्ति से बहुत उत्पादक बातचीत हुई। Apple का ध्यान खींचने में मदद करने के लिए धन्यवाद। मुझे बिल्कुल उम्मीद नहीं थी कि इतना समर्थन मिलेगा

    • जिन लोगों ने Anukari के बारे में Show HN पोस्ट देखी थी
    • उस थ्रेड में macOS performance का मुद्दा सामने आया। मूल रूप से Anukari, Apple Silicon पर, खासकर base model M1 hardware पर, ज्यादातर अच्छी तरह काम करता है। मैंने सारे test base M1 पर किए और यह शानदार चला। यह hardware कमाल का है
    • लेकिन इसे चलाने के लिए मुझे एक असामान्य workaround लागू करना पड़ा, ताकि macOS GPU clock speed को इतना बढ़ा दे कि audio processing पर्याप्त तेज़ हो सके। GPU performance state के लिए macOS की सामान्य heuristics, Anukari के असामान्य workload को समझ नहीं पाती
    • खैर, अब मेरे पास पूरी स्थिति को विस्तार से लिखने का समय था ताकि मैं Apple में सही व्यक्ति, शायद Metal API पर काम करने वाले किसी व्यक्ति, से संपर्क करने में मदद मांग सकूँ
    • मदद का अनुरोध है :)
  • Anukari नाम की उत्पत्ति को लेकर जिज्ञासा है

  • मुझे दो मशहूर कंपनियों में काम करने का अनुभव है, जिनके Apple App Store में बहुत प्रसिद्ध apps थे

    • Apple में जिन टीमों से बात हुई, उन्हें हमारी समस्याओं में बिल्कुल दिलचस्पी नहीं थी। लेकिन वे अक्सर हमें अपने दफ़्तर बुलाते थे ताकि WWDC में घोषित की जाने वाली नई features पर चर्चा कर सकें। उनके साथ जुड़ाव हमेशा ऐसे ही शुरू और खत्म होता था। उनके buggy software के काम न करने की वजह समझने के लिए हमें technical support tickets खर्च करने पड़ते थे
    • Apple की developer relations टीम गंभीर लोग नहीं है
  • Metal profiler में एक बहुत उपयोगी feature है: application को profile करते समय आप Metal "performance state" चुन सकते हैं। इसे profiler के बाहर configure नहीं किया जा सकता

    • शायद इसके लिए कोई private API हो। reverse engineering का रास्ता शायद आसान हो सकता है। अगर इसके लिए किसी special entitlement की ज़रूरत न हो तो
  • इस समस्या के लिए API expose करने में दिक्कत यह है कि बहुत से developer हमेशा highest performance state को force कर देंगे। मुझे नहीं पता कि इसे रोका भी जाए और API भी बनी रहे, इसका कोई अच्छा तरीका है या नहीं

  • इस समस्या को हल करने का सबसे अच्छा तरीका:

    • WWDC videos के ज़रिए उस engineer को खोजें जो इस समस्या के बारे में सबसे अच्छी जानकारी रखता हो
    • उसे सीधे इस format में email भेजें: mthomson@apple.com (Michael Thomson)
  • दूसरे आख़िरी paragraph में डाला गया link मिस मत कीजिए। वह Mick Gordon द्वारा बनाई गई demo का link है। @anukarimusic ने इसका जवाब दिया है

    • दूसरे ही दिन इसने मेरे बनाए हुए सारे demos को पूरी तरह पीछे छोड़ दिया, और मैं इसे तब से हर दिन इस्तेमाल कर रहा हूँ
  • एक अतिरिक्त बात, Anukari को Mick Gordon sound pack रिलीज़ करना चाहिए और उसके साथ revenue share करना चाहिए। वह व्यक्ति कमाल की चीज़ें बना रहा है। उसका demo शानदार है। जब आपके पास एक powerful tool हो, तो artists के साथ collaboration करना अच्छा business है और दुनिया के लिए भी अच्छा है। अगर आपको Mick Gordon पसंद है। मुझे है

  • मुझे इस app की ज़रूरत नहीं है, लेकिन यह वाकई बहुत शानदार है। ऐसे apps computing में फिर से "मज़ा" वापस लाते हैं। ऐसा नहीं कि अभी मज़ा नहीं है, लेकिन यह उन पुराने दिनों की याद दिलाता है जब ज़्यादा graphics और experimental programs इधर-उधर नज़र आते थे। यहाँ तक कि demoscene भी