dolfin::SparsityPattern::apply

Issue #86 resolved
Marco Morandini created an issue

The attached code hangs up in parallel, at least for me. I've not been able to significantly simplify this testcase. I'm not sure it is a bug because of the grad3d and stress_n definitions. Anyway: with two processes the backtrace of one process reads


#6 0x00007fa7ca1ab23a in ompi_mpi_finalize () at runtime/ompi_mpi_finalize.c:225 #7 0x00007fa7d538a002 in Finalize () at /home/marco/local/Fenics/include/openmpi/ompi/mpi/cxx/functions_inln.h:135 #8 dolfin::SubSystemsManager::finalize_mpi () at /home/marco/Programmi/Dolphin/src_from_dorsal/dolfin/dolfin/common/SubSystemsManager.cpp:238 #9 0x00007fa7d538a1de in dolfin::SubSystemsManager::finalize () at /home/marco/Programmi/Dolphin/src_from_dorsal/dolfin/dolfin/common/SubSystemsManager.cpp:208 #10 0x00007fa7dcddff61 in __run_exit_handlers (status=0, listp=0x7fa7dd14f5c8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:77


and of the other


#7 0x00007f9b2ab0d4e0 in MPI_Comm_dup (comm=0x7f9b2ae3a820 <ompi_mpi_comm_world>, newcomm=0x7fffb56074b0) at comm_dup.c:62 #8 0x00007f9b35c6ae94 in dolfin::MPI::all_to_all<unsigned long> (in_values=std::vector of length 2, capacity 2 = {...}, out_values=std::vector of length 0, capacity 0) at /home/marco/Programmi/Dolphin/src_from_dorsal/dolfin/dolfin/common/MPI.h:148 #9 0x00007f9b35c6f3ea in dolfin::SparsityPattern::apply (this=0x3432de0) at /home/marco/Programmi/Dolphin/src_from_dorsal/dolfin/dolfin/la/SparsityPattern.cpp:328 #10 0x00007f9b360a3ce8 in dolfin::SparsityPatternBuilder::build (sparsity_pattern=..., mesh=..., dofmaps=std::vector of length 2, capacity 2 = {...}, cells=true, interior_facets=false, exterior_facets=false, diagonal= false) at /home/marco/Programmi/Dolphin/src_from_dorsal/dolfin/dolfin/fem/SparsityPatternBuilder.cpp:181 #11 0x00007f9b360d458d in dolfin::AssemblerBase::init_global_tensor (this=0x33d8220, A=..., a=...) at /home/marco/Programmi/Dolphin/src_from_dorsal/dolfin/dolfin/fem/AssemblerBase.cpp:100


Comments (4)

  1. Prof Garth Wells

    It's not clear to me what you're trying to compute, but it looks like the dimension of your test space is just one. This would likely lead to problems in the parallel partitioning.

  2. Marco Morandini reporter

    The dimension of the TestFunction in the original test case is three (VectorFuntionSpace(mesh,"R",0,3) ). I agree with you on the likely origin of the problem. I'm attaching a reduced testcase where the dimension of the TestFunction is one. Note however that by defining L as L = pdx instead of L = pR*dx the reduced testcase works in parallel. I agree that nobody should do this in a real code; however that's a just testcase, not a real usage patter (the first testcase is
    similar to the formulation I'm slowly translating into dolfin)

  3. Marco Morandini reporter

    The issues with SparsityPattern are fixed after the introduction of communicators. There remains an issue with PETScMatrix::init. I'm going to open a separate bug for this last one.

  4. Log in to comment