मैं प्रक्रिया 0 से प्रक्रिया 0 से डेटा भेजने की कोशिश कर रहा हूं। यह प्रोग्राम सफल होता है जब बफर आकार 64kb से कम होता है, लेकिन अगर बफर बहुत बड़ा हो जाता है तो लटकता है। निम्नलिखित कोड इस समस्या को पुनः चाहिए (हैंग चाहिए), लेकिन अगर n
कम से कम 8000.एमपीआई भेजें और रिकव बफर आकार के साथ 64kb से अधिक हैं
int main(int argc, char *argv[]){
int world_size, world_rank,
count;
MPI_Status status;
MPI_Init(NULL, NULL);
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
if(world_size < 2){
printf("Please add another process\n");
exit(1);
}
int n = 8200;
double *d = malloc(sizeof(double)*n);
double *c = malloc(sizeof(double)*n);
printf("malloc results %p %p\n", d, c);
if(world_rank == 0){
printf("sending\n");
MPI_Send(c, n, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD);
printf("sent\n");
}
if(world_rank == 1){
printf("recv\n");
MPI_Recv(d, n, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &status);
MPI_Get_count(&status, MPI_DOUBLE, &count);
printf("recved, count:%d source:%d tag:%d error:%d\n", count, status.MPI_SOURCE, status.MPI_TAG, status.MPI_ERROR);
}
MPI_Finalize();
}
Output n = 8200;
malloc results 0x1cb05f0 0x1cc0640
recv
malloc results 0x117d5f0 0x118d640
sending
Output n = 8000;
malloc results 0x183c5f0 0x184c000
recv
malloc results 0x1ea75f0 0x1eb7000
sending
sent
recved, count:8000 source:0 tag:0 error:0
होने के लिए संशोधित किया गया है मैं इस question और इस question जो समान हैं पाया सफल होने चाहिए, लेकिन मैं वहाँ इस मुद्दे का मानना है deadlocks बनाने के साथ है। मैं यहां एक समान समस्या की अपेक्षा नहीं करता क्योंकि प्रत्येक प्रक्रिया केवल एक भेज या प्राप्त कर रही है।
संपादित करें: जोड़ा गया स्थिति की जांच।
EDIT2: ऐसा लगता है कि मेरे पास ओपनएमपीआई स्थापित है, लेकिन जब मैंने एमकेएल स्थापित किया तो इंटेल से एमपीआई के कार्यान्वयन को भी स्थापित किया। मेरा कोड ओपनएमपीआई हेडर और पुस्तकालयों के साथ संकलित किया जा रहा था, लेकिन इंटेल के mpirun के साथ चलाया। जब मैं सुनिश्चित करता हूं कि मैं OpenPI से निष्पादन योग्य mpirun के साथ भागता हूं तो सभी काम अपेक्षित हैं।
कोड ठीक दिखता है और वास्तव में मेरे ओपनएमपीआई इंस्टॉलेशन में ठीक है। कृपया अपनी स्थापना के बारे में अधिक जानकारी प्रदान करें। क्या आप उस इंस्टॉलेशन के साथ किसी भी पर्याप्त जटिल एमपीआई कोड को चलाने में सक्षम थे? कृपया यह जानकारी भी प्रदान करें जहां यह लटका हुआ है। आउटपुट, और फांसी प्रक्रियाओं को डीबग करने का प्रयास भी मदद करेगा। – Zulan
मैं @ जुलन से सहमत हूं, लेकिन मैं रुवु से 'स्थिति' की जांच करने के लिए कहूंगा। – gsamaras
इसके अलावा: ** ** मॉलोक के परिणाम ** मूल्यों की जांच करें! – Zulan