मुझे क्यूरमुडगेन उत्तर देना चाहिए। उपरोक्त किसी भी सुझाव से मेरी उत्पादकता में कभी सुधार नहीं हुआ है। वे समानांतर में मेरे पसंदीदा विकल्प की तुलना में धीमी और महंगी हैं: प्रति प्रक्रिया एक जीडीबी सत्र। प्रत्येक gdb एक MPI प्रक्रिया से जुड़ सकता है और एक xterm में बैठ सकता है (यह PETSc का उपयोग करके स्वचालित रूप से होता है -start_in_debugger
)। मैंने इसे 15 साल तक, खुशी से इस्तेमाल किया है। आपत्तियां:
1) मैं वैश्विक डेटा को नहीं देख सकता
चूंकि MPI एक साझा-साझा मॉडल है, कोई वैश्विक डेटा नहीं है, केवल स्थानीय डेटा है
2) इस रणनीति में बहुत सारी प्रक्रियाएँ नहीं हैं
न ही बगिया। कीड़े व्यक्तिगत प्रक्रियाओं पर होते हैं, शायद 1 या 2 पड़ोसियों से इनपुट के साथ। YOu केवल भाग लेने वाली प्रक्रियाओं ( -debugger_nodes 0,5,17
उदाहरण के लिए PETSc में आपके द्वारा उपयोग की जाने वाली ) पर gdb को आसानी से देख सकता है । इसके अलावा, उपरोक्त सिस्टम हर प्रक्रिया पर चलने के दौरान बहुत कुछ छोड़ देते हैं, जो उन्हें धीमा कर देता है। जीडीबी विधि वास्तव में, बहुत अधिक मापनीय है।
gdb भी बहुत पोर्टेबल है। यह हर जगह चलता है, सी ++ और फोरट्रान को समझता है, और आपको रन के अंदर मनमाने कोड को निष्पादित करने की अनुमति देता है। इसमें चलने पर डेटा को आसानी से प्रदर्शित करने के लिए मैंने विशेष कार्य लिखे हैं।