treat Py_Finalize() more like MPI_Finalize()
this is done by - not automatically calling Py_Finalize() when destructing a python interpreter - adding wrapper functions so that the call to Py_Finalize() is hidden and skipped if Python support is no included. - call the Python::finalize() wrapper in main.cpp (similar to the equivalent Kokkos function) - add a wrapper of that call to the C library interface
This commit is contained in:
@ -15,6 +15,8 @@
|
||||
|
||||
#include "accelerator_kokkos.h"
|
||||
#include "input.h"
|
||||
#include "lmppython.h"
|
||||
|
||||
#if defined(LAMMPS_EXCEPTIONS)
|
||||
#include "exceptions.h"
|
||||
#endif
|
||||
@ -79,15 +81,18 @@ int main(int argc, char **argv)
|
||||
delete lammps;
|
||||
} catch (LAMMPSAbortException &ae) {
|
||||
KokkosLMP::finalize();
|
||||
Python::finalize();
|
||||
MPI_Abort(ae.universe, 1);
|
||||
} catch (LAMMPSException &e) {
|
||||
KokkosLMP::finalize();
|
||||
Python::finalize();
|
||||
MPI_Barrier(lammps_comm);
|
||||
MPI_Finalize();
|
||||
exit(1);
|
||||
} catch (fmt::format_error &fe) {
|
||||
fprintf(stderr, "fmt::format_error: %s\n", fe.what());
|
||||
KokkosLMP::finalize();
|
||||
Python::finalize();
|
||||
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||
exit(1);
|
||||
}
|
||||
@ -99,11 +104,13 @@ int main(int argc, char **argv)
|
||||
} catch (fmt::format_error &fe) {
|
||||
fprintf(stderr, "fmt::format_error: %s\n", fe.what());
|
||||
KokkosLMP::finalize();
|
||||
Python::finalize();
|
||||
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
KokkosLMP::finalize();
|
||||
Python::finalize();
|
||||
MPI_Barrier(lammps_comm);
|
||||
MPI_Finalize();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user