के साथ कमांड लाइन के माध्यम से तर्क पास करना मैं सी ++ का उपयोग कर एकाधिक प्रक्रियाओं पर एक प्रक्रिया चलाने के लिए एमपीआई कॉल का उपयोग कर रहा हूं। मेरी मुख्य समारोह में प्रथम कुछ पंक्तियों देखने की तरह:MPI
int main(int argc, char *argv[]){
int comm_sz;
int my_rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
x = atoi(argv[4]);
y = atoi(argv[5]);
अब जब मैं निष्पादित और का उपयोग कर
mpiexec -n 1 program 10 10
मैं चाहता हूँ x और y मान 10 और 10 आवंटित करने के लिए मेरे कार्यक्रम चलाने के रूप में, वे 4 और 5 वें तर्क पारित कर रहे हैं। लेकिन यह नहीं हो रहा है और यह इन चर को 0 और 0 के अनुसार निर्दिष्ट करता है। और मेरा कार्यक्रम वांछित के रूप में नहीं चलाता है।
जब मैं इन नंबरों को बदलता हूं तो मेरा सीरियल कोड चल रहा है। यह सिर्फ मैं एमपीआई के लिए नया हूँ।
क्या आप सुझाव दे सकते हैं कि मैं गलत कहां जा रहा हूं?
क्या आपने अभी 'argv' की सामग्री को प्रिंट करने का प्रयास किया है? परिणाम क्या है? – suszterpatt
मैंने किया। जब मैंने सरणी में सामग्री मुद्रित की, तो उसने दो तर्क 10, 10 को पहचान लिया लेकिन पद 4 और 5 पर नहीं। – freshmaster
ऐसा लगता है कि उन्हें उन्हें argv [1] और argv [2] के रूप में पढ़ा जा रहा है। मैंने अपनी समस्या को हल किया हाँ, लेकिन मैं जानना चाहता था कि यह क्यों हो रहा है। मैं वास्तव में MPI_Init समझ नहीं रहा हूँ। – freshmaster