5
私は次のことをする良い理由があると仮定します(私は持っていると思います)。私はC++コードの周りのPythonラッピングをしました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を呼び出すデストラクタがあります。 PythonでこのC++クラスをラップするPythonオブジェクトを自由に作成、削除して削除できるようにしたいと思います。最終的な目標は、Pythonで完全にWebサービスを作成し、Python C++エクスポンスを一度インポートし、ユーザーの要求に応じてPythonコードを実行することです。
EDIT:コンストラクタとデストラクタでMPI_InitとMPI_Finalizeを実行できないようにするために、C++コードをリファクタリングすると思いますので、Pythonスクリプト(mpi4pyを使用)で1回だけ実行できます。