इंटेल ट्रेस एनालाइज़र और कलेक्टर के साथ आरंभ करें

इंटेल ट्रेस एनालाइजर और कलेक्टर उत्पाद के साथ आरंभ करें

इंटेल® ट्रेस एनालाइज़र और कलेक्टर के साथ आरंभ करें

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

इंटेल ट्रेस एनालाइज़र और कलेक्टर डाउनलोड करें

  • Intel® oneAPI HPC टूलकिट के एक भाग के रूप में
  • एक स्वतंत्र उपकरण के रूप में

आवश्यक शर्तें

  • Intel Trace Analyzer और Collector चलाने से पहले, सुनिश्चित करें कि आपने नवीनतम Intel® MPI लाइब्रेरी और Intel® oneAPI DPC++/C++ कंपाइलर या Intel® Fortran कंपाइलर स्थापित किया है।
  • यह कम्पाइलर्स, इंटेल MPI लाइब्रेरी, और इंटेल ट्रेस एनालाइजर और कलेक्टर के लिए आवश्यक पर्यावरण चर सेट करता है, और आप अपने अनुप्रयोगों का पता लगाने के लिए तैयार हैं।
  • अधिक जानकारी के लिए, देखें: Intel® oneAPI HPC टूलकिट सिस्टम आवश्यकताएँ.

वर्कफ़्लो को समझें

  1. अपने आवेदन का पता लगाएं
  2. सबसे सक्रिय MPI कार्यों का विश्लेषण करें
  3. समस्याग्रस्त अंतःक्रियाओं की पहचान करें
  4. समस्या पैदा करने वाले फ़ंक्शन को बदलकर अपने एप्लिकेशन का प्रदर्शन बेहतर बनाएँ

अपने MPI आवेदन का पता लगाएं

ट्रेस उत्पन्न करें file निम्नलिखित अनुप्रयोग व्यवहार विश्लेषण के लिए ईवेंट लॉग एकत्रित करने के लिए.

  1. oneAPI इंस्टॉलेशन डायरेक्टर से setvars स्क्रिप्ट चलाकर Intel® ट्रेस एनालाइज़र और कलेक्टर को लॉन्च करने के लिए वातावरण सेट करें
    टिप्पणी
    डिफ़ॉल्ट रूप से, Intel Trace Analyzer और Collector Linux* OS के लिए /opt/intel/oneapi/itac में और Program में स्थापित होता है Files (x86)\Intel\oneAPI\itac\latest विंडोज* ओएस के लिए.
    लिनक्स पर:
    $ स्रोत /opt/intel/oneapi/setvars.sh
    विंडोज़ पर:
    “सी:\प्रोग्राम Fileएस (x86)\Intel\oneAPI\setvars.bat"
  2. अपना MPI अनुप्रयोग चलाएँ और -trace विकल्प के साथ एक ट्रेस उत्पन्न करें।
    लिनक्स पर:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    विंडोज़ पर:
    एप्लिकेशन संकलित करें और ट्रेस एकत्रित करें.
    Intel oneAPI DPC++/C++ कंपाइलर के लिए, चलाएँ:
    > mpiicc -ट्रेस poisson_sendrecv.single.c
    इंटेल फोरट्रान कम्पाइलर के लिए, चलाएँ:
    > mpiifort -ट्रेस poisson_sendrecv.single.f
    यह भूतपूर्वample as के लिए एक ट्रेस (stf*) उत्पन्न करता हैampले poisson_sendrcv.single एमपीआई आवेदन
  3. उत्पन्न .stf खोलें file इंटेल ट्रेस एनालाइज़र के साथ इंटेल ट्रेस एनालाइज़र और कलेक्टर के साथ।
    लिनक्स पर:
    $ ट्रेसएनालाइज़र ./ poisson_sendrecv.single.stf
    विंडोज़ पर:
    ट्रेस एनालाइजर poisson_sendrecv.single.stf

टिप्पणी
परीक्षण के उद्देश्य से, आप पहले से एकत्रित ट्रेस डाउनलोड कर सकते हैं file इस दस्तावेज़ में प्रयुक्त पॉइसन के लिए poisson_sendrecv.single.stf ढूंढें और इसे इंटेल ट्रेस एनालाइज़र और कलेक्टर के साथ खोलें।
.stf (एसटीएफ) file सारांश पृष्ठ में खुलता है view, जो आपके एप्लिकेशन प्रदर्शन के बारे में सामान्य जानकारी दर्शाता है:इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 1इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 2टिप्पणी इंटेल ट्रेस एनालाइज़र और कलेक्टर कार्यक्षमता के बारे में अधिक जानकारी के लिए, अधिक जानें देखें.

सबसे सक्रिय MPI फ़ंक्शन का विश्लेषण करें

MPI अनुप्रयोग व्यवहार का विश्लेषण करें, अड़चनों का पता लगाएं और अनुप्रयोग प्रदर्शन को बेहतर बनाने के तरीकों को खोजने के लिए क्रमांकन की पहचान करें।

  1. सारांश पृष्ठ से ईवेंट टाइमलाइन खोलें view शीर्ष MPI फ़ंक्शनों के गहन विश्लेषण के लिए जारी रखें > चार्ट > ईवेंट टाइमलाइन पर क्लिक करें।
    यह चार्ट समय के साथ व्यक्तिगत प्रक्रिया गतिविधियों को प्रदर्शित करता है।
    अनुप्रयोग कार्य पुनरावृत्तीय होता है, जहां प्रत्येक पुनरावर्तन में एक कम्प्यूटेशनल भाग और MPI संचार शामिल होता है।
  2. ध्यान केंद्रित करने के लिए एक एकल पुनरावृत्ति की पहचान करें और अपने माउस को आवश्यक समय अंतराल पर खींचकर उस पर ज़ूम करें:इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 3निशान view ट्रेस के भीतर वह अनुभाग दिखाता है जिसे आपने चुना है। इवेंट टाइमलाइन चार्ट उन इवेंट को दिखाता है जो चयनित पुनरावृत्ति के दौरान सक्रिय थे।
    • क्षैतिज पट्टियाँ इन प्रक्रियाओं में बुलाए गए कार्यों के साथ प्रक्रियाओं को दर्शाती हैं।
    • काली रेखाएँ प्रक्रियाओं के बीच भेजे गए संदेशों को दर्शाती हैं। ये रेखाएँ भेजने और प्राप्त करने वाली प्रक्रियाओं को जोड़ती हैं।
    • नीली रेखाएं सामूहिक कार्यों को दर्शाती हैं, जैसे प्रसारण या कमी संचालन।
  3. फ्लैट प्रो पर स्विच करेंfile टैब (ए) पर क्लिक करें, ताकि इवेंट टाइमलाइन में आपके द्वारा चयनित समय बिंदु पर निष्पादित होने वाले कार्यों पर करीब से नज़र डाली जा सके।इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 4
  4. अपने अनुप्रयोग में MPI प्रक्रिया गतिविधि का विश्लेषण करने के लिए MPI फ़ंक्शनों को असमूहीकृत करें।
    ऐसा करने के लिए, फ्लैट प्रो में सभी प्रक्रियाएं > समूह एमपीआई (बी) पर राइट-क्लिक करेंfile और UngroupMPI चुनें। यह ऑपरेशन अलग-अलग MPI कॉल को उजागर करता है।
  5. पुनरावृत्ति की शुरुआत में MPI_Sendrecv का उपयोग करके अपने प्रत्यक्ष पड़ोसियों के साथ संचार करने वाली प्रक्रियाओं का विश्लेषण करें। उदाहरण के लिएampपर:इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 5
    • a. वर्ष 2008 मेंampले, MPI_Sendrecv डेटा एक्सचेंज में एक अड़चन है: प्रक्रिया अपने अगले पड़ोसी के साथ तब तक डेटा एक्सचेंज नहीं करती जब तक कि पिछले वाले के साथ एक्सचेंज पूरा न हो जाए। इवेंट टाइमलाइन view इस अड़चन को एक सीढ़ी के रूप में प्रदर्शित किया गया है।
    • b. पुनरावृति के अंत में MPI_Allreduce सभी प्रक्रियाओं को पुनः सिंक्रनाइज़ करता है; यही कारण है कि इस ब्लॉक में रिवर्स सीढ़ी जैसी उपस्थिति है।
  6. फ़ंक्शन प्रो का उपयोग करके क्रमांकन की पहचान करेंfile और संदेश प्रोfile views.
    • क. एक ही समय पर चार्ट खोलें:
      फंक्शन प्रो मेंfile चार्ट पर, लोड बैलेंस टैब खोलें।
    • मैसेज प्रो खोलने के लिए चार्ट मेनू पर जाएंfile.
    • बी. लोड बैलेंस टैब में, MPI_Sendrecv और MPI_Allreduce को विस्तृत करें। लोड बैलेंसिंग से पता चलता है कि MPI_Sendrecv में बिताया गया समय प्रक्रिया संख्या के साथ बढ़ता है, जबकि MPI_Allreduce के लिए समय घटता है।
    • सी. संदेश की जांच करेंfile चार्ट को निचले दाएं कोने में ले जाएं।
      ब्लॉकों की रंग कोडिंग यह दर्शाती है कि उच्च रैंक से निम्न रैंक तक जाने वाले संदेशों को आनुपातिक रूप से अधिक समय की आवश्यकता होती है, जबकि निम्न रैंक से उच्च रैंक तक जाने वाले संदेशों में कमजोर सम-विषम प्रकार का पैटर्न दिखाई देता है:इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 6

तुलनात्मक विश्लेषण के परिणाम बताते हैं कि एप्लिकेशन में कोई जटिल विनिमय पैटर्न नहीं हैं, विनिमय केवल पड़ोसी प्रक्रियाओं के साथ किया जाता है। एप्लिकेशन के संचार मॉडल को अनुकूलित करने के लिए संचार बदलकर अपने एप्लिकेशन के प्रदर्शन को बेहतर बनाने के लिए जानकारी आवश्यक होगी।

असंतुलित संचार की पहचान करें

अपने आवेदन को आदर्श परिस्थितियों में देखें और मूल ट्रेस की तुलना करें file समस्याग्रस्त अंतःक्रियाओं को अलग करने के लिए आदर्श का उपयोग किया जाता है।

  1. एक आदर्श बनाएं file:
    • a. उन्नत > आदर्शीकरण चुनें या क्लिक करेंइंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 7 (आदर्शीकरण) टूलबार बटन.
    • बी. आदर्शीकरण संवाद बॉक्स में आदर्शीकरण मापदंडों की जाँच करें (आदर्श ट्रेस file नाम और रूपांतरण के लिए समय सीमा)।
    • c. अपने ट्रेस को आदर्श बनाने के लिए प्रारंभ पर क्लिक करें।
  2. मूल ट्रेस की तुलना आदर्श ट्रेस से करें:
    • a. उन्नत > असंतुलन आरेख चुनें या क्लिक करें इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 8(असंतुलन आरेख) टूलबार बटन.
    • ख. असंतुलन आरेख संवाद बॉक्स में, अन्य खोलें पर क्लिक करें File बटन पर क्लिक करें, आदर्श ट्रेस पर जाएं और उसका चयन करें।
    • सी. असंतुलन आरेख विंडो में, कुल मोड बटन पर क्लिक करें और ब्रेकडाउन मोड का चयन करें।

इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 9

आप देख सकते हैं कि MPI_Sendrecv सबसे अधिक समय लेने वाला फ़ंक्शन है। असंतुलन भार प्रदर्शित होता है
हल्के रंग का और MPI_Sendrecv फ़ंक्शन के लिए लगभग 10% शामिल है। यह वह समय है जब प्रक्रियाएँ एक दूसरे के लिए प्रतीक्षा करती हैं।

संचार में बदलाव करके अपने एप्लिकेशन का प्रदर्शन सुधारें

  1. अवरुद्ध संचार को गैर-अवरुद्ध संचार में परिवर्तित करके MPI अनुप्रयोग के प्रदर्शन में सुधार करें।
    अपने कोड में सीरियल MPI_Sendrcv को नॉन-ब्लॉकिंग संचार से बदलें: MPI_Isend और MPI_Irecv. उदाहरण के लिएample: मूल कोड स्निपेट:
    // सीमा विनिमय
    शून्य विनिमय (पैरा * पी, ग्रिड * जीआर) {
    int i,j;
    एमपीआई_स्थिति स्थिति_100, स्थिति_200, स्थिति_300, स्थिति_400;
    //पहली पंक्ति नीचे भेजें
    MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD,
    &स्थिति_100);
    // अंतिम पंक्ति भेजें
    MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->up, 200, MPI_COMM_WORLD);
    MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->down, 200, MPI_COMM_WORLD, &status_200);
    इंटेल ट्रेस एनालाइज़र तुलना का उपयोग करें view संशोधित के साथ क्रमबद्ध आवेदन की तुलना करने के लिए
    // बाएं कॉलम को tmp arrays में कॉपी करें
    यदि(gr->left != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
    //दाहिनी ओर भेजें
    MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
    यदि(gr->left != MPI_PROC_NULL)
    {
    MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->left, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = left_col[i];
    }
    }
    अपडेट किया गया कोड स्निपेट
    MPI_Request आवश्यकता[7];
    //पहली पंक्ति नीचे भेजें
    MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD, &req[0]);
    MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD, &req[1]);
    …..
    MPI_Waitall(7, आवश्यकता, MPI_STATUSES_IGNORE);
    एक बार सही हो जाने पर, संशोधित आवेदन का एकल पुनरावर्तन निम्नलिखित उदाहरण की तरह दिखाई देगाampपर:इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 10
  2. इंटेल ट्रेस एनालाइज़र तुलना का उपयोग करें view क्रमबद्ध आवेदन की संशोधित आवेदन से तुलना करने के लिए। तुलना की मदद से दो ट्रेस की तुलना करें View, जा रहा हूँ View > तुलना करें. तुलना View ऐसा दिखता है:इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 11तुलना में Viewआप देख सकते हैं कि गैर-अवरुद्ध संचार का उपयोग करने से क्रमांकन को हटाने और प्रक्रियाओं के संचार के समय को कम करने में मदद मिलती है।
    टिप्पणी अपने एप्लिकेशन के नोड-स्तरीय प्रदर्शन के बारे में अधिक जानकारी के लिए, संबंधित टूल के लिए दस्तावेज़ देखें: Intel® VTune™ Profileएमपीआई कोड विश्लेषण और इंटेल® एडवाइजर का उपयोग करके इंटेल® एमपीआई अनुप्रयोगों का विश्लेषण करना।

और अधिक जानें

इंटेल ट्रेस एनालाइज़र और कलेक्टर के बारे में अधिक जानकारी के लिए निम्नलिखित संसाधनों का अन्वेषण करें।इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 12इंटेल ट्रेस एनालाइजर और कलेक्टर के साथ आरंभ करें चित्र 13

नोटिस और अस्वीकरण

  • इंटेल प्रौद्योगिकियों को सक्षम हार्डवेयर, सॉफ़्टवेयर या सेवा सक्रियण की आवश्यकता हो सकती है।
  • कोई भी उत्पाद या घटक पूर्णतः सुरक्षित नहीं हो सकता।
  • आपकी लागत और परिणाम भिन्न हो सकते हैं.
  • © इंटेल कॉर्पोरेशन। इंटेल, इंटेल लोगो और अन्य इंटेल चिह्न इंटेल कॉर्पोरेशन या उसकी सहायक कंपनियों के ट्रेडमार्क हैं। अन्य नामों और ब्रांडों को दूसरों की संपत्ति के रूप में दावा किया जा सकता है।
  • इस दस्तावेज़ द्वारा किसी भी बौद्धिक संपदा अधिकार के लिए कोई लाइसेंस (स्पष्ट या निहित, विबंधन द्वारा या अन्यथा) प्रदान नहीं किया गया है।
  • वर्णित उत्पादों में डिज़ाइन दोष या त्रुटियाँ हो सकती हैं जिन्हें इरेटा के रूप में जाना जाता है, जिसके कारण उत्पाद प्रकाशित विनिर्देशों से अलग हो सकता है। वर्तमान में वर्णित इरेटा अनुरोध पर उपलब्ध हैं।
  • इंटेल बिना किसी सीमा के, व्यापारिक योग्यता की निहित वारंटी, किसी विशेष उद्देश्य के लिए उपयुक्तता, और गैर-उल्लंघन, साथ ही प्रदर्शन के दौरान उत्पन्न होने वाली किसी भी वारंटी, व्यवहार के पाठ्यक्रम, या व्यापार में उपयोग सहित सभी व्यक्त और निहित वारंटी को अस्वीकार करता है।

दस्तावेज़ / संसाधन

इंटेल ट्रेस एनालाइज़र और कलेक्टर के साथ आरंभ करें [पीडीएफ] उपयोगकर्ता गाइड
इंटेल ट्रेस एनालाइज़र और कलेक्टर के साथ आरंभ करें, इंटेल, ट्रेस एनालाइज़र और कलेक्टर के साथ आरंभ करें, कलेक्टर

संदर्भ

एक टिप्पणी छोड़ें

आपकी ईमेल आईडी प्रकाशित नहीं की जाएगी। आवश्यक फ़ील्ड चिह्नित हैं *