कितना धीमा पेट्स सी 4 सी बनाम सी / सी ++ / फोरट्रान है?
मुझे लगता है कि यह कोड निष्पादित होने पर काफी हद तक निर्भर करेगा, लेकिन मैट्रिक्स-वेक्टर उत्पाद की तरह कुछ सरल क्या है?
कितना धीमा पेट्स सी 4 सी बनाम सी / सी ++ / फोरट्रान है?
मुझे लगता है कि यह कोड निष्पादित होने पर काफी हद तक निर्भर करेगा, लेकिन मैट्रिक्स-वेक्टर उत्पाद की तरह कुछ सरल क्या है?
जवाबों:
यह वैज्ञानिक प्रोग्रामिंग समुदाय में एक व्यापक रूप से आयोजित चिंता है, और मैं कम्प्यूटेशनल साइंस में प्रदर्शन की अनिश्चितता को प्रमुख "मिथकों" में से एक मानूंगा।
जैसा कि @fcruz चर्चा करता है, PETScpetsc4py
पुस्तकालयों का एक आवरण है , Python में PETSc का पुन: कार्यान्वयन नहीं है। इसलिए, आप PETSc से या अपने ड्राइवर कोड / फ़ंक्शन कॉल्स में ओवरहेड से या तो कॉपी करने से किसी भी प्रदर्शन दंड की उम्मीद कर सकते हैं। petsc4py
बहुत सावधानी से लागू किया जाता है, और जब तक आप समझते हैंnumpy
बहुआयामी सरणी इंटरफेस, आप ओवरहेड कॉपी से बच सकते हैं। मेरे द्वारा उपयोग किए जाने वाले अधिकांश मामलों के लिए, पायथन में काम करने का प्रदर्शन दंड 10-40% के आदेश पर है, और मैं अक्सर अन्य तरीकों से पर्याप्त लाभ प्राप्त करता हूं जो इस प्रदर्शन के हिट होने के लिए अधिक है। वास्तव में, कई और अधिक अनुभवी एचपीसी पायथन डेवलपर्स से मैंने बात की है कि यह प्रदर्शन अंतर आमतौर पर और भी कम हो सकता है, और जब पायथन कम्प्यूटेशनल रूप से महंगे कोड चला रहा है, तो निश्चित रूप से यह मामला होगा।
petsc4py
भंडार में ही प्रदर्शन / लचीलापन दुविधा यह वर्णन करने के लिए उपयोगी उदाहरण के एक नंबर की सुविधा है। petsc4py
नामक डेमो के लिए स्रोत रिपॉजिटरी में देखें perftest
, जो पायथन ड्राइवर और सी ड्राइवर ( App.f90
उस निर्देशिका में प्रदान किए गए फोरट्रान कर्नेल के ऊपर) दोनों का उपयोग करके समीकरणों की एक गैर-रेखीय प्रणाली को हल करता है । यहां प्रदर्शन ओवरहेड 10% के क्रम पर है।
एक ठोस उदाहरण के रूप में, मैं एक सॉफ्टवेयर पैकेज PyClaw पर काम करने वाले वैज्ञानिकों की एक टीम का हिस्सा हूं , जो सेल ग्रिड पर रीमैन समस्याओं को सुलझाने के लिए समानांतर ग्रिड प्रबंधन और विरासत फोरट्रान गुठली के लिए PETSc में इंटरफेस करता है। हमने एक फोरट्रान चालक से स्विच करने से प्रदर्शन में गिरावट का काफी सावधानीपूर्वक अध्ययन किया, और आप सम्मेलन पेपर में तालिका 1 में पृष्ठ 5 के निचले भाग पर परिणाम देख सकते हैं । हमारे मामले में, हमने पेट्सक और फोरट्रान के लिए हमारे कोड को आसानी से इंटरफ़ेस करने की क्षमता के लिए ऑन-कोर प्रदर्शन का थोड़ा कारोबार किया और हज़ारों कोर पर समानांतर रूप से कुशलतापूर्वक चलाया।
App.f90
स्रोत देखें perftest
)। I / O में कोई प्रदर्शन अंतर नहीं है। क्या आपने उच्च स्तर के पैकेज के लिए FEniCS को देखा है ?
पेट्सक्रीपी पेट्सक को आरोपित करने का एक और तरीका है , लेकिन अजगर से , या यह कहने के लिए एक ही है कि, पेट्सक 4 खटखट बाइंडिंग प्रदान करता है ताकि, अजगर से, आप पेट्सक डेटा संरचनाओं और दिनचर्या का उपयोग कर सकें जो समानांतर पीडीई सॉल्वर के विकास के प्रयास को कम करने के लिए हैं। (वह पैमाना)।
पेट्सक अपने सॉल्वरों को कई स्तर के सार प्रदान करता है, और आप अपने खुद के सॉल्वर को लागू करने के लिए पेट्सक का उपयोग भी कर सकते हैं। सॉफ्टवेयर अमूर्तता के निम्नतम स्तर पर, PETSc BLAS, LAPACK, और MPI का उपयोग करता है, और सबसे अच्छे रूप में यह इन के कार्यान्वयन के रूप में तेज़ होगा।
अब, पेट्स 4 ख ने पेट्सक को बाइंडिंग को लागू करने के लिए साइथन का उपयोग करता है। साइथन का उपयोग करने का ओवरहेड सापेक्ष है कि पेट्सक से कितनी संगणनाएं की जा रही हैं। यदि आप PETSc से उच्च स्तर के PDE सॉल्वर का उपयोग करते हैं, तो ओवरहेड्स काफी छोटे होने चाहिए, ताकि आपको उनके बारे में चिंता करने की आवश्यकता न हो।
PETSc बनाम GEMV के प्रदर्शन तुलना की तुलना में शायद एक और महत्वपूर्ण सवाल यह है कि क्या PETSc आपकी नौकरी के लिए सही उपकरण है। यदि आपको गैर-तुच्छ समानांतर पीडीई सॉल्वरों को लागू करने की आवश्यकता है, तो सबसे अधिक संभव है, पेट्सक वास्तव में आपकी सहायता करेगा। हालाँकि, यदि आपको GEMV का एक समूह बनाने की आवश्यकता है, तो आप BLAS लाइब्रेरी चाहते हैं। सौभाग्य!