मैं एमपीआई प्रोग्रामिंग, स्टाइल सीखने के लिए नया हूं, मैं संरचनाओं को परिभाषित करके व्युत्पन्न डेटा-प्रकार बनाने तक सफल रहा। अब मैं अपनी संरचना में वेक्टर शामिल करना चाहता हूं और प्रक्रिया में डेटा भेजना चाहता हूं। पूर्व के लिए:एमपीआई (सी ++) में वेक्टर उपयोग
struct Structure{
//Constructor
Structure(): X(nodes),mass(nodes),ac(nodes) {
//code to calculate the mass and accelerations
}
//Destructor
Structure() {}
//Variables
double radius;
double volume;
vector<double> mass;
vector<double> area;
//and some other variables
//Methods to calculate some physical properties
अब एमपीआई का उपयोग करके मैं प्रक्रियाओं में संरचना में डेटा भेजना चाहता हूं। क्या मेरे लिए MPI_type_struct वेक्टर शामिल करना संभव है और डेटा भेजना संभव है?
मैंने मंचों के माध्यम से पढ़ने की कोशिश की, लेकिन मैं वहां दिए गए प्रतिक्रियाओं से स्पष्ट तस्वीर प्राप्त नहीं कर पा रहा हूं। उम्मीद है कि मैं डेटा
पीएस: मैं डेटा को व्यक्तिगत रूप से भेज सकता हूं, लेकिन यदि मैं डोमेन को बहुत बड़ा मानता हूं तो MPI_Send/Recieve का उपयोग कर डेटा भेजने का ओवरहेड प्राप्त कर सकता है (10000 * 10000 कहें)
त्वरित प्रतिक्रिया के लिए धन्यवाद, यहां समस्या मैं एक ही समय में पूरी संरचना को वेक्टर और अन्य डेटा-प्रकारों के एक चर भेजने के बजाय भेजना चाहता हूं जिससे प्रक्रियाओं के बीच संचार ओवरहेड कम हो ... और मेरे पास 10 वैक्टर हैं संचार के लिए भेजा जा सकता है .... इसलिए यह धीमी गणना समय और वहां दक्षता – lsk1985
@ lsk1985 को कम करके, ठीक है, मैं एमपीआई के साथ काफी मदद करने के लिए पर्याप्त अनुभव नहीं कर रहा हूं। माफ़ कीजिये। मैं केवल प्रक्रियाओं के बीच पॉइंटर्स भेजने से बचने के लिए सावधान रहूंगा (डेटा के बजाय वे इंगित करते हैं)। –
यदि आपके पास पॉइंटर्स की एक सरणी है, तो MPI_Type_hindexed बनाएं, जो कि बाइट्स में व्यक्त विस्थापन के साथ ब्लॉक की एक पंक्ति है। यह केवल अंकगणित थोड़ा पता लेता है। –