समानांतर डीबगिंग के लिए कौन सा सॉफ़्टवेयर उपयोग करना अच्छा है?


24

मैं अभी कोई समानांतर कोड नहीं चला रहा हूं, लेकिन मैं भविष्य में OpenMP और MPI के हाइब्रिड का उपयोग करके समानांतर कोड चलाने का अनुमान लगा रहा हूं। धारावाहिक परियोजनाएं चलाते समय डिबगर मेरे लिए अमूल्य उपकरण रहे हैं।

किसी को समानांतर सॉफ्टवेयर डिबगिंग के लिए उपयोग करने के लिए एक समानांतर डिबगर (या कई डीबगर) की सिफारिश कर सकते हैं? मुफ्त सॉफ्टवेयर बेहतर होगा, लेकिन प्रभावी वाणिज्यिक सॉफ्टवेयर का उल्लेख करने में संकोच न करें।


मैं यह नहीं देखता कि स्टैकओवरफ्लो . com/ questions/329259/… से यहाँ के उत्तर कैसे भिन्न होंगे । MPI यहाँ का कठिन हिस्सा है, OpenMP नहीं। किसी भी स्थिति में, थ्रेडेड प्रोग्रामों में दौड़ की शर्तों को डिबग करना अभी सीमा रेखा पर अकारण है।
जेफ

थ्रेडसैनिटाइज़र थ्रेडेड कार्यक्रमों में दौड़ की स्थितियों को डिबग करने के लिए एक अच्छा समाधान है, हालांकि मैं किसी को भी जानता हूं जिसने मिश्रण में एमपीआई को जोड़ने की कोशिश की है!
mabraham

जवाबों:


17

वहाँ मूल रूप से दो प्रमुख, वाणिज्यिक विकल्प हैं: एलिनिया से डीडीटी (जो कि हम टीएसीसी में उपयोग करते हैं ) और टोटलव्यू (जैसा कि अन्य टिप्पणी में उल्लेख किया गया है)। उनके पास तुलनीय विशेषताएं हैं, दोनों सक्रिय रूप से विकसित हैं, और प्रत्यक्ष प्रतियोगी हैं।

ग्रहण में उनका समानांतर उपकरण प्लेटफ़ॉर्म है , जिसमें MPI और OpenMP प्रोग्रामिंग समर्थन और एक समानांतर डीबगर शामिल होना चाहिए।


मैंने पीटीपी समानांतर डीबगर का उपयोग करते हुए किसी के बारे में कभी नहीं सुना है। मुझे यकीन नहीं है कि इसका क्या मतलब है ...
जेफ

मेरे कुछ सहकर्मी हैं, जिन्होंने कोशिश की है, लेकिन मैंने खुद इसके साथ कभी नहीं खेला।
बिल बर्थ

16

मुझे क्यूरमुडगेन उत्तर देना चाहिए। उपरोक्त किसी भी सुझाव से मेरी उत्पादकता में कभी सुधार नहीं हुआ है। वे समानांतर में मेरे पसंदीदा विकल्प की तुलना में धीमी और महंगी हैं: प्रति प्रक्रिया एक जीडीबी सत्र। प्रत्येक gdb एक MPI प्रक्रिया से जुड़ सकता है और एक xterm में बैठ सकता है (यह PETSc का उपयोग करके स्वचालित रूप से होता है -start_in_debugger)। मैंने इसे 15 साल तक, खुशी से इस्तेमाल किया है। आपत्तियां:

1) मैं वैश्विक डेटा को नहीं देख सकता

चूंकि MPI एक साझा-साझा मॉडल है, कोई वैश्विक डेटा नहीं है, केवल स्थानीय डेटा है

2) इस रणनीति में बहुत सारी प्रक्रियाएँ नहीं हैं

न ही बगिया। कीड़े व्यक्तिगत प्रक्रियाओं पर होते हैं, शायद 1 या 2 पड़ोसियों से इनपुट के साथ। YOu केवल भाग लेने वाली प्रक्रियाओं ( -debugger_nodes 0,5,17उदाहरण के लिए PETSc में आपके द्वारा उपयोग की जाने वाली ) पर gdb को आसानी से देख सकता है । इसके अलावा, उपरोक्त सिस्टम हर प्रक्रिया पर चलने के दौरान बहुत कुछ छोड़ देते हैं, जो उन्हें धीमा कर देता है। जीडीबी विधि वास्तव में, बहुत अधिक मापनीय है।

gdb भी बहुत पोर्टेबल है। यह हर जगह चलता है, सी ++ और फोरट्रान को समझता है, और आपको रन के अंदर मनमाने कोड को निष्पादित करने की अनुमति देता है। इसमें चलने पर डेटा को आसानी से प्रदर्शित करने के लिए मैंने विशेष कार्य लिखे हैं।


4
हे कायर, यदि आप नीचे जाते हैं, तो एक टिप्पणी छोड़ दें।
मैट नेप्ले

5
मैं डाउन वोट नहीं था, लेकिन मैं कुछ हद तक असहमत हूं। मैंने बड़े पैमाने पर कुछ बग्स का सामना किया है जो छोटे आकारों में नहीं दिखा, और उन्हें खोजने के लिए एक समानांतर डिबगर का उपयोग करना एक कुशल तरीका था। मैं अपने अधिकांश डिबगिंग प्रिंटफ के साथ करता हूं और जीडीबी के साथ व्यक्तिगत प्रक्रियाओं से जुड़ता हूं, लेकिन मैंने समानांतर डीबगर होने का लाभ देखा है।
बिल बर्थ

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

1
@BillBarth मुझे पता है कि आप सही हैं कि कीड़े 1000 प्रॉसेस पर मौजूद हैं जो छोटी समस्याओं पर दिखाई नहीं देते हैं (दिनेश के पास एक प्रसिद्ध PETSc था जो महीनों तक चला था जो केवल 82 प्रॉक्स पर दिखा था)। मेरी बात प्रचलित ज्ञान का मुकाबला करने के लिए अधिक थी। मुझे लगता है कि समानांतर डीबगर्स एक अच्छा अंतिम उपाय है, पहले रिसॉर्ट नहीं।
मैट नेप्ले

3
मैंने तुम्हें नीचा दिखाया। आपका जवाब नहीं जो पूछा गया था।
ऐटरेल

5

मैं धारावाहिक और समानांतर कार्यक्रमों के लिए केवल दो डिबगर्स का उपयोग करता हूं:

  1. कार्निगन डिबगर, यानी विवेकपूर्ण प्रिंट स्टेटमेंट और सावधान सोच।
  2. GDB के कई उदाहरणों में वर्णित है http://www.open-mpi.org/faq/?category=debugging#serial-debuggers

मामले में जहां (2) पर्याप्त रूप से मापनीय नहीं है, मैं (1 बी) का संदर्भ देता हूं।


1
मैंने "कार्निगन डीबगर" नाम कभी नहीं सुना है, लेकिन मैं अनुमोदन करता हूं, जैसा कि मैंने हमेशा डिबग किया है।
जैक पुल्सन

4

है इंटेल समांतर स्टूडियो जो एक समानांतर डिबगर भी शामिल है। मैंने इसके साथ कभी काम नहीं किया है लेकिन मैंने इसे कुछ डेमो में इस्तेमाल किया है। यहां एक वीडियो ट्यूटोरियल है जो कुछ विशेषताओं को दिखाता है।

मैंने gdb के आसपास कुछ रैपर भी देखे हैं जो कुछ मामलों में यथोचित रूप से काम करते हैं।


3

कुल मिलाकर । यह एक वाणिज्यिक डिबगर है। प्रत्येक प्रोसेसर पर स्टैक देखना बहुत आसान है। आप प्रोसेसर / थ्रेड्स में परिवर्तनशील मान देख सकते हैं (और उन्हें बदल सकते हैं)। चर मानों की कल्पना करने के लिए आप वैक्टर या मैट्रेसीज की साजिश कर सकते हैं। स्पष्ट रूप से स्क्रिप्टिंग प्वाइंट विश्लेषण के लिए स्पष्ट रूप से स्क्रिप्टिंग भी (Tk / Tcl) संभव है, हालांकि मैंने खुद इसके साथ कभी काम नहीं किया है।


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

मैं भी कुल दूसरे। मैंने इसे कई उदाहरणों में इस्तेमाल किया है और यह बहुत शक्तिशाली है, यद्यपि बहुत महंगा है ...
BlaB

1

समानांतर कोड डिबग करने के कुछ सरल तरीकों के लिए, हमने डीबगिंग पर अनुभाग में कुछ जवाब एकत्र किए हैं। II FAQ अनुभाग में डीबगिंग: https://github.com/dealii/dealii/wiki/Frequently-Asked-Questions#debugging -dealii-अनुप्रयोगों


1

मुझे आश्चर्य है कि किसी ने पैड (समानांतर अनुप्रयोग डीबगर) का उल्लेख क्यों नहीं किया जो ओपी के रूप में खुला स्रोत और मुफ्त सॉफ्टवेयर है, लेकिन उदाहरण के लिए वाणिज्यिक समकक्षों के रूप में शक्तिशाली नहीं: एचपीसी के लिए कुल दृश्य


-1

यहाँ पहले दिए गए कुछ जवाबों का एक पाचन है:

OpenMP के समय के कार्य हैं: omp_get_wtime()और omp_get_wtick()- ऑनलाइन डॉक्स

Google में CPU प्रोफाइलर है

वहाँ Scalasca कि OpenMP और MPI प्रोफ़ाइल और विश्लेषण करता है

तब ताऊ और vtune है जो मैंने इस्तेमाल नहीं किया है।

सौभाग्य!


मुझे नहीं लगता कि सवाल समय के बारे में है, लेकिन मैं गलत हो सकता हूं। हालांकि अच्छे सुझाव ...
यन

यह उत्तर डिबगिंग की तुलना में रूपरेखा के बारे में अधिक है ...
mbq

मैंने पाया है कि प्रोफाइलिंग टूल समानांतर डिबगर्स के लिए अच्छे विकल्प बनाते हैं। मुझे यह अक्सर लगता है कि समानांतर कीड़े प्रदर्शन की समस्याओं से संबंधित हैं, जैसे कि MPI में लॉगजम। प्रदर्शन उपकरण अक्सर इसे प्रकट करेंगे। TAU की मेमोरी प्रोफाइलर यह पता लगाने के लिए अच्छा है कि यादृच्छिक सेगफॉल्ट क्यों हो सकते हैं।
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.