मानते हैं कि मेरे पास निम्नलिखित करने का अच्छा कारण है (मुझे लगता है कि मेरे पास है), यह कैसे काम करता है?mpi एकाधिक init अंतिम
--------------------------------------------------------------------------
Calling any MPI-function after calling MPI_Finalize is erroneous.
The only exceptions are MPI_Initialized, MPI_Finalized and MPI_Get_version.
--------------------------------------------------------------------------
*** An error occurred in MPI_Init
*** after MPI was finalized
*** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)
[ange:13049] Abort after MPI_FINALIZE completed successfully; not able to guarantee that all other processes were killed!
ऐसा करने के लिए कारण:
#include "mpi.h"
int main(int argc, char *argv[])
{
int myid, numprocs;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
// ...
MPI_Finalize();
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
// ...
MPI_Finalize();
return 0;
}
मैं त्रुटि मिली
मैं चारों ओर सी ++ कोड अजगर रैपिंग है। कुछ लिपटे वर्ग में कन्स्ट्रक्टर होता है जो MPI_Init को कॉल करता है, और विनाशक जो MPI_Finalize को कॉल करता है। मैं पाइथन को स्वतंत्र रूप से बनाने में सक्षम होना चाहता हूं, इस सी ++ कक्षा को लपेटने वाले पायथन ऑब्जेक्ट को दोबारा हटाएं। अंतिम लक्ष्य पाइथन में पूरी तरह से एक webservice बनाना है, जो एक बार पायथन सी ++ एक्सस्टेंशन आयात करता है, और उपयोगकर्ता अनुरोध के बाद कुछ पायथन कोड निष्पादित करता है।
संपादित करें: मुझे लगता है कि मैं MPI_Init और MPI_ को कन्स्ट्रक्टर और विनाशक में परिभाषित करने की संभावना देने के लिए सी ++ कोड को दोबारा प्रतिक्रिया दूंगा, इसलिए इसे पाइथन लिपि (mpi4py का उपयोग करके) में एक बार करना संभव है।