java - खबर - बाड़ा मंदिर कम्पिल कम्पिल उत्तर प्रदेश




जेएनआई बनाम जेएनएनए प्रदर्शन (3)

जेएनआई जेएनआई की तुलना में बहुत धीमी है, लेकिन बहुत आसान है यदि प्रदर्शन एक समस्या नहीं है, तो जेएनए का उपयोग करें

सीधे बफ़र्स का उपयोग करने का फायदा यह है कि सबसे महत्वपूर्ण आपरेशन जेएनआई या जेएनए का इस्तेमाल नहीं करते हैं और इस प्रकार तेज़ हैं। वे आंतरिक का उपयोग करते हैं, इसका मतलब है कि वे एकल मशीन कोड निर्देशों में परिवर्तित हो जाते हैं।

अगर जावा कोड सी से काफी धीमी है, तो संभवतः यह कोड पर्याप्त रूप से अनुकूलित नहीं किया गया है। आम तौर पर जीपीयू को सभी काम करना चाहिए ताकि अगर जावा थोड़ी धीमी हो तो इससे ज्यादा अंतर नहीं होना चाहिए।

उदाहरण के लिए यदि आप GPU में 99% समय खर्च करते हैं और जावा दो बार लंबे समय तक ले जाता है तो कुल 99% + 2% या 1% धीमा हो जाएगा।

हमारे पास एक विशिष्ट c/asm encrypt/decrypt c/asm आवेदन है जो किसी विशिष्ट विधि के साथ एक बड़ी encrypt/decrypt डेटा के लिए GPU (ओपनसीएल) का उपयोग करता है, और यह सिर्फ सही काम करता है, कोई समस्या नहीं है परियोजना (वेब ​​और वितरण) का एक हिस्सा JEE द्वारा विकसित किया गया है, और हमें केवल स्थानीय एप्लिकेशन / लाइब्रेरी को कॉल करने की ज़रूरत है

हमने इसे Process क्लास के जरिए अलग-अलग प्रक्रिया के रूप में कॉल करने की कोशिश की है। समस्या यह है कि हम अनुप्रयोग (ईवेंट, संचालकों, थ्रेड्स, आदि ...) को नियंत्रित नहीं कर सकते। हमने सिर्फ सी कोड को जावा कोड में बदलने की कोशिश की, लेकिन प्रदर्शन का निधन हो गया। प्रक्रिया के रूप में देशी कोड को छोड़कर, मैं जेएनए और जेएनआई के बारे में सोच रहा हूं, लेकिन कुछ सवाल हैं।

प्रशन:

  1. बेहतर (तेजी से) पढ़ने / लिखने के समाधान के लिए, क्या जेएनआई और जेएनए दोनों में प्रत्यक्ष (अप्रबंधित) स्मृति [जावा ( ByteBuffer#allocateDirect() )] द्वारा डेटा का आदान-प्रदान करना संभव है?
  2. क्या यह मूल कोड द्वारा प्रक्रिया को प्रबंधित और संभाल कर सकता है, और जावा कोड (ओपनसीएल लिब) के जरिए GPU (साझा) मेमोरी एक्सेस कर सकता है?
  3. प्रदर्शन के बारे में क्या? जेएनआई की तुलना में जेएनए तेज है?

हमारे पास Redhat Linux6 x 64 पर दो AMD W7000 क्लस्टर डिवाइस है


भारी संख्या में क्रंचिंग सी / जीपीयू में की जाती है, आपके सभी जावा <-> सी इंटरफेस में फेरबदल डेटा / आउट होता है। मुझे आश्चर्य होगा अगर यह एक बाधा है

किसी भी मामले में, सबसे सरल, स्पष्ट कोड लिखें जो नौकरी करता है। अगर यह पता चलता है कि प्रदर्शन पर्याप्त नहीं है, तो बाधाओं को मापने के लिए उपाय करें , और उनको एक-एक करके हल करें जब तक कि प्रदर्शन ठीक नहीं है। प्रोग्रामर का समय कंप्यूटर समय की तुलना में बहुत अधिक मूल्यवान है, केवल विशेष परिस्थितियों के अलावा


जेएनए के आधिकारिक पूछे जाने वाले प्रश्न से :

कस्टम जेएनआई की तुलना में जेएनए प्रदर्शन कैसे मिलता है?

जेएनए सीधी मानचित्रण कस्टम जेएनआई के पास प्रदर्शन प्रदान कर सकता है अंतरफलक मैपिंग की लगभग सभी प्रकार की मैपिंग सुविधाएं उपलब्ध हैं, हालांकि स्वत: प्रकार के रूपांतरण में कुछ ओवरहेड लगने होंगे।

जेएनए इंटरफेस मैपिंग का इस्तेमाल करते हुए एक एकल देशी कॉल के लिए कॉलिंग ओवरहेड परिमाण (~ 10 एक्स) के बराबर कस्टम जेएनआई (चाहे वह वास्तव में आपके आवेदन के संदर्भ में एक अलग सवाल है) से बड़ा समय हो सकता है। कच्चे शब्दों में, कॉलिंग ओवरहेड दसियों माइक्रोसॉन्ड्स के बजाय सैकड़ों माइक्रोसॉन्ड्स के आदेश पर है। ध्यान दें कि यह कॉल ओवरहेड है, न कि कुल कॉल का समय। यह परिमाण गतिशील रूप से बनाए रखा प्रकार की जानकारी और प्रणालियों के उपयोग में सिस्टम के बीच अंतर के विशिष्ट है, जहां प्रकार की जानकारी स्थिर संकलित होती है। जेएनआई हार्ड-कोड प्रकार की जानकारी के तरीके में अभिविन्यास, जहां JNA अंतरफलक मैपिंग गतिशील रूप से रनटाइम पर प्रकार की जानकारी निर्धारित करती है।

आप अनुमान लगा सकते हैं कि जेएनए प्रत्यक्ष मानचित्रण के लिए परिमाण के एक क्रम के बारे में तेजी से बढ़ोतरी हुई है, और दो या तीन का एक कारक वहां से कस्टम जेएनआई तक जा रहा है। वास्तविक अंतर उपयोग और फ़ंक्शन के हस्ताक्षर के आधार पर अलग-अलग होंगे। किसी भी ऑप्टिमाइज़ेशन प्रक्रिया के साथ, आपको पहले निर्धारित करना चाहिए कि आपको गति बढ़ाने की आवश्यकता है, और फिर देखें कि लक्षित ऑप्टिमाइज़ेशन प्रदर्शन से कितना अंतर होता है। कस्टम जेएनआई का उपयोग करते समय जावा में प्रोग्रामिंग की हर चीज की आसानी से छोटे प्रदर्शन लाभ में कमी आती है







jna