Skip to content

Deadlock in gesvx when FACT='E' #119

Closed
@TLCFEM

Description

@TLCFEM

Running the attached problem with two processes such as

mpirun -n 2 ./deadlock

results in deadlock.

From the bt, one process is waiting to receive data from the other process in pdcopy.

libmpi.so.12!MPIDI_NM_progress.constprop.0 (Unknown Source:0)
libmpi.so.12!MPIDI_progress_test (Unknown Source:0)
libmpi.so.12!MPIR_Wait_state (Unknown Source:0)
libmpi.so.12!MPIR_Wait (Unknown Source:0)
libmpi.so.12!PMPI_Recv (Unknown Source:0)
BI_Srecv(BLACSCONTEXT * ctxt, int src, int msgid, BLACBUFF * bp) (\scalapack-2.2.2\BLACS\SRC\BI_Srecv.c:8)
Cdgerv2d(int ConTxt, int m, int n, double * A, int lda, int rsrc, int csrc) (\scalapack-2.2.2\BLACS\SRC\dgerv2d_.c:79)
PB_CpaxpbyDN(PBTYP_T * TYPE, char * CONJUG, int M, int N, char * ALPHA, char * A, int IA, int JA, int * DESCA, char * AROC, char * BETA, char * B, int IB, int JB, int * DESCB, char * BROC) (\scalapack-2.2.2\PBLAS\SRC\PTOOLS\PB_CpaxpbyDN.c:656)
PB_Cpaxpby(PBTYP_T * TYPE, char * CONJUG, int M, int N, char * ALPHA, char * A, int IA, int JA, int * DESCA, char * AROC, char * BETA, char * B, int IB, int JB, int * DESCB, char * BROC) (\scalapack-2.2.2\PBLAS\SRC\PTOOLS\PB_Cpaxpby.c:754)
pdcopy_(int * N, double * X, int * IX, int * JX, int * DESCX, int * INCX, double * Y, int * IY, int * JY, int * DESCY, int * INCY) (\scalapack-2.2.2\PBLAS\SRC\pdcopy_.c:217)
pdgesvx(character*1 fact, character*1 trans, integer(kind=4) n, integer(kind=4) nrhs, real(kind=8) (*) a, integer(kind=4) ia, integer(kind=4) ja, integer(kind=4) (*) desca, real(kind=8) (*) af, integer(kind=4) iaf, integer(kind=4) jaf, integer(kind=4) (*) descaf, integer(kind=4) (*) ipiv, character*1 equed, real(kind=8) (*) r, real(kind=8) (*) c, real(kind=8) (*) b, integer(kind=4) ib, integer(kind=4) jb, integer(kind=4) (*) descb, real(kind=8) (*) x, integer(kind=4) ix, integer(kind=4) jx, integer(kind=4) (*) descx, real(kind=8) rcond, real(kind=8) (*) ferr, real(kind=8) (*) berr, real(kind=8) (*) work, integer(kind=4) lwork, integer(kind=4) (*) iwork, integer(kind=4) liwork, integer(kind=4) info, integer(kind=8) _fact, integer(kind=8) _trans, integer(kind=8) _equed) (\scalapack-2.2.2\SRC\pdgesvx.f:791)
run() (\deadlock.cpp:92)
main() (\deadlock.cpp:100)

The attached program does not yield correct solution, only created to reproduce the deadlock.

deadlock.cpp.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions