पेट्सक 4 सी बनाम सी / सी ++ / फोरट्रान का उपयोग करने की क्षमता


11

कितना धीमा पेट्स सी 4 सी बनाम सी / सी ++ / फोरट्रान है?

मुझे लगता है कि यह कोड निष्पादित होने पर काफी हद तक निर्भर करेगा, लेकिन मैट्रिक्स-वेक्टर उत्पाद की तरह कुछ सरल क्या है?

जवाबों:


11

यह वैज्ञानिक प्रोग्रामिंग समुदाय में एक व्यापक रूप से आयोजित चिंता है, और मैं कम्प्यूटेशनल साइंस में प्रदर्शन की अनिश्चितता को प्रमुख "मिथकों" में से एक मानूंगा।

जैसा कि @fcruz चर्चा करता है, PETScpetsc4py पुस्तकालयों का एक आवरण है , Python में PETSc का पुन: कार्यान्वयन नहीं है। इसलिए, आप PETSc से या अपने ड्राइवर कोड / फ़ंक्शन कॉल्स में ओवरहेड से या तो कॉपी करने से किसी भी प्रदर्शन दंड की उम्मीद कर सकते हैं। petsc4pyबहुत सावधानी से लागू किया जाता है, और जब तक आप समझते हैंnumpyबहुआयामी सरणी इंटरफेस, आप ओवरहेड कॉपी से बच सकते हैं। मेरे द्वारा उपयोग किए जाने वाले अधिकांश मामलों के लिए, पायथन में काम करने का प्रदर्शन दंड 10-40% के आदेश पर है, और मैं अक्सर अन्य तरीकों से पर्याप्त लाभ प्राप्त करता हूं जो इस प्रदर्शन के हिट होने के लिए अधिक है। वास्तव में, कई और अधिक अनुभवी एचपीसी पायथन डेवलपर्स से मैंने बात की है कि यह प्रदर्शन अंतर आमतौर पर और भी कम हो सकता है, और जब पायथन कम्प्यूटेशनल रूप से महंगे कोड चला रहा है, तो निश्चित रूप से यह मामला होगा।

petsc4pyभंडार में ही प्रदर्शन / लचीलापन दुविधा यह वर्णन करने के लिए उपयोगी उदाहरण के एक नंबर की सुविधा है। petsc4pyनामक डेमो के लिए स्रोत रिपॉजिटरी में देखें perftest, जो पायथन ड्राइवर और सी ड्राइवर ( App.f90उस निर्देशिका में प्रदान किए गए फोरट्रान कर्नेल के ऊपर) दोनों का उपयोग करके समीकरणों की एक गैर-रेखीय प्रणाली को हल करता है । यहां प्रदर्शन ओवरहेड 10% के क्रम पर है।

एक ठोस उदाहरण के रूप में, मैं एक सॉफ्टवेयर पैकेज PyClaw पर काम करने वाले वैज्ञानिकों की एक टीम का हिस्सा हूं , जो सेल ग्रिड पर रीमैन समस्याओं को सुलझाने के लिए समानांतर ग्रिड प्रबंधन और विरासत फोरट्रान गुठली के लिए PETSc में इंटरफेस करता है। हमने एक फोरट्रान चालक से स्विच करने से प्रदर्शन में गिरावट का काफी सावधानीपूर्वक अध्ययन किया, और आप सम्मेलन पेपर में तालिका 1 में पृष्ठ 5 के निचले भाग पर परिणाम देख सकते हैं । हमारे मामले में, हमने पेट्सक और फोरट्रान के लिए हमारे कोड को आसानी से इंटरफ़ेस करने की क्षमता के लिए ऑन-कोर प्रदर्शन का थोड़ा कारोबार किया और हज़ारों कोर पर समानांतर रूप से कुशलतापूर्वक चलाया।


मेरे पास एक समान चिंता का विषय एक छोटे से असंरचित कोड भी है। PETSc केवल डेटा संरचना और सॉल्वर प्रदान करता है, लेकिन मुझे अभी भी मेष (4GB इनपुट फ़ाइल तक) में पढ़ना है, विभाजन करना, मैपिंग बनाना, तत्वों पर लूप बनाना, PETSc को इकट्ठा करने और हल करने से पहले स्थानीय (तत्व) कठोरता मैट्रिस आदि की गणना करना चाहिए। । अजगर इस गैर पेट्सक संबंधित सामान विशेष रूप से I / O, मैपिंग और तत्व स्तर की गणना के लिए धीमा नहीं होगा। क्योंकि बाकी कोड वैसे भी सरल है।
stali

तत्व-स्तर की गणना आमतौर पर कर्नेल के रूप में पारित की जाती है ( App.f90स्रोत देखें perftest)। I / O में कोई प्रदर्शन अंतर नहीं है। क्या आपने उच्च स्तर के पैकेज के लिए FEniCS को देखा है ?
एरन अहमदिया

तुम सही हो। मुझे इसका विचार नहीं है लेकिन मेरे विशेष मामले में कई ऐसे कर्नेल हैं (विभिन्न प्रकार के तत्वों के लिए आकार के कार्य, तत्व स्तर की गणना, मैपिंग आदि) जो कोड का लगभग 90% है। मैंने कुछ समय पहले फेनिक्स को देखा था और बाहरी विवरणों से निपटने और बीसी को लागू करने आदि जैसे बहुत सारे विवरण पहली नज़र में बिल्कुल स्पष्ट नहीं थे या अधिक जटिल (कम से कम मेरे लिए) प्रतीत होते हैं। इसके अलावा मैं फोरट्रान का उपयोग करता हूं जो अपने जैसे गैर सीएस लोगों के लिए उपयोग करने के लिए (उत्कृष्ट PETSc प्रलेखन दिया गया है) काफी सरल है। मैं वास्तव में अपने काम के लिए अजगर :) की तुलना में आसान लगता हूं।
stali

7

पेट्सक्रीपी पेट्सक को आरोपित करने का एक और तरीका है , लेकिन अजगर से , या यह कहने के लिए एक ही है कि, पेट्सक 4 खटखट बाइंडिंग प्रदान करता है ताकि, अजगर से, आप पेट्सक डेटा संरचनाओं और दिनचर्या का उपयोग कर सकें जो समानांतर पीडीई सॉल्वर के विकास के प्रयास को कम करने के लिए हैं। (वह पैमाना)।

पेट्सक अपने सॉल्वरों को कई स्तर के सार प्रदान करता है, और आप अपने खुद के सॉल्वर को लागू करने के लिए पेट्सक का उपयोग भी कर सकते हैं। सॉफ्टवेयर अमूर्तता के निम्नतम स्तर पर, PETSc BLAS, LAPACK, और MPI का उपयोग करता है, और सबसे अच्छे रूप में यह इन के कार्यान्वयन के रूप में तेज़ होगा।

अब, पेट्स 4 ख ने पेट्सक को बाइंडिंग को लागू करने के लिए साइथन का उपयोग करता है। साइथन का उपयोग करने का ओवरहेड सापेक्ष है कि पेट्सक से कितनी संगणनाएं की जा रही हैं। यदि आप PETSc से उच्च स्तर के PDE सॉल्वर का उपयोग करते हैं, तो ओवरहेड्स काफी छोटे होने चाहिए, ताकि आपको उनके बारे में चिंता करने की आवश्यकता न हो।

PETSc बनाम GEMV के प्रदर्शन तुलना की तुलना में शायद एक और महत्वपूर्ण सवाल यह है कि क्या PETSc आपकी नौकरी के लिए सही उपकरण है। यदि आपको गैर-तुच्छ समानांतर पीडीई सॉल्वरों को लागू करने की आवश्यकता है, तो सबसे अधिक संभव है, पेट्सक वास्तव में आपकी सहायता करेगा। हालाँकि, यदि आपको GEMV का एक समूह बनाने की आवश्यकता है, तो आप BLAS लाइब्रेरी चाहते हैं। सौभाग्य!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.