Dear list members, I am facing a really weird problem, that I have been struggling with for a while now. I have written a problem class which, based on other objects, generates a system matrix, rhs and solution vector object. The datastructures are Trilinos Block distributed types. When I do this for the first time it all works perfectly. However the class is part of an optimization scheme and usually at the second time the object is used (randomly also later, but this has only happened once or twice) the Solver does not start. I am checking with MPI-barriers to see if all processes arrive at the GMRES::solve and they do but somehow not even my own preconditioners vmult method gets called anymore. The objects (the two vectors and the system matrix are exactly the same that they have been at the previous step (only slightly different numbers, but same vectors of IndexSets for the partition among processors)
I have debugged this code-segment with Eclipse and the parallel debugger but don't know what to do with the call stack: 18 ompi_request_default_wait_all() 7fffddd54b15 17 ompi_coll_tuned_barrier_intra_recursivedoubling() 7fffcf9abb5d 16 PMPI_Barrier() 7fffddd68a9c 15 Epetra_MpiDistributor::DoPosts() 7fffe4088b4f 14 Epetra_MpiDistributor::Do() 7fffe4089773 13 Epetra_DistObject::DoTransfer() 7fffe400a96a 12 Epetra_DistObject::Export() 7fffe400b7b7 11 int Epetra_FEVector::GlobalAssemble<int>() 7fffe4023d7f 10 Epetra_FEVector::GlobalAssemble() 7fffe40228e3 9 dealii::TrilinosWrappers::MPI::Vector::reinit() trilinos_vector.cc:261 7ffff52c937e 8 dealii::TrilinosWrappers::MPI::BlockVector::reinit() trilinos_block_vector.cc:191 7ffff4e43bd9 7 dealii::internal::SolverGMRES::TmpVectors<dealii::TrilinosWrappers::MPI::BlockVector>::operator() solver_gmres.h:535 4a847d 6 dealii::SolverGMRES<dealii::TrilinosWrappers::MPI::BlockVector>::solve<dealii::TrilinosWrappers::BlockSparseMatrix, PreconditionerSweeping>() solver_gmres.h:813 4d654a 5 Waveguide::solve() Waveguide.cpp:1279 48f150 The last line (5) here is a function I wrote which calls SolverGMRES<dealii::TrilinosWrappers::MPI::BlockVector>::solve with my preconditioner (which works perfecly fine during the previous run. I found some information online about MPI_Barrier being instable sometimes but I don't know enough about the inner workings of Trilinos (Epetra) and Dealii to make a judgment call here. If none can help I will try to provide a code fragment but I doubt that will be possible (if it really is a racing condition and I strip away the rather large ammout of code surrounding this segment, it is unlikely to be reproducible. Originally I had used two MPI communicatorsthat were only different in the numbering of the processes (one for the primal, one for the dual problem) and created two independend objects of my problem class hich only used their respective communicator. In that case, the solver had only worked whenever the numbering of processes was either equal to that of MPI_COMM_WORLD or exactly the opposite but not for say 1-2-3-4 -> 1-3-2-4 and gotten stuck in the exact same way. I had thought it might be some internal use of MPI_COMM_WORLD that was blocking somehow but it also happens now that I only use one communicator (MPI_COMM_WORLD). Thank you in advance for your time, Pascal Kraft -- The deal.II project is located at http://www.dealii.org/ For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en --- You received this message because you are subscribed to the Google Groups "deal.II User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to dealii+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.