2014-03-13 13:57 GMT+01:00 Anders Logg <[email protected]>: > On Thu, Mar 13, 2014 at 09:36:42AM +0000, Garth N. Wells wrote: >> >> >> On Thu, 13 Mar, 2014 at 9:23 AM, Johannes Ring <[email protected]> >> wrote: >> >On Wed, Mar 12, 2014 at 6:30 PM, Jan Blechta >> ><[email protected]> wrote: >> >> On Wed, 12 Mar 2014 17:19:31 +0100 >> >> Benjamin Kehlet <[email protected]> wrote: >> >> >> >>> Hello! >> >>> >> >>> This code snippet >> >>>----------------------------------------------------------------------- >> >>> from dolfin import * >> >>> >> >>> m = Mesh() >> >>> >> >>> editor = MeshEditor() >> >>> editor.open(m, 2, 2) >> >>> editor.init_vertices(3) >> >>> editor.add_vertex(0, Point(.0, .0)) >> >>> editor.add_vertex(1, Point(1., .0)) >> >>> editor.add_vertex(2, Point(0., 1.)) >> >>> >> >>> editor.init_cells(1) >> >>> editor.add_cell(0, 0, 1, 2) >> >>> editor.close() >> >>> >> >>> print MeshQuality.radius_ratio_min_max(m) >> >>>----------------------------------------------------------------------- >> >>> >> >>> gives this error (when Dolfin is built with MPI support) >> >> >> >> Can't reproduce. >> > >> >I got the same error as Benjamin. >> >> I get the error too. >> >> Initialising MPI is a long-standing issue that we've been dodging. >> The solution in other libraries is that the user makes a call at the >> start of a program to initialise MPI. We have a sprinkling of >> behind-the-scenes initialisation of MPI. It's not ideal to have >> calls all over the place the initialise MPI. I'm not sure what the >> best solution is to balance performance and simplicity. > > Wouldn't it work to say that all classes that are parallel-aware need > to initialize MPI? In this case the Mesh class. The cost should be > virtually zero. I don't know what the cost is for calling > MPI_Initialized() but we could add an extra flag in DOLFIN which is > set when SubSystemsManager::init_mpi() is called so that a call to > MPI_Initialized is not necessary when we know that we ourselves have > actually initialized MPI explicitly before.
I was thinking along the same lines, namely to add a call to init_mpi() in the constructor of Variable. Benjamin > > -- > Anders > _______________________________________________ > fenics mailing list > [email protected] > http://fenicsproject.org/mailman/listinfo/fenics _______________________________________________ fenics mailing list [email protected] http://fenicsproject.org/mailman/listinfo/fenics
