mirror of https://gitlab.com/QEF/q-e.git
qe_pztrtri and qe_pdtrtri: split communicators were created on all processors
but freed only on active processors. Should fix the crashes occurring in long runs, reported in issue #140. Found by Carlo Cavazzoni.
This commit is contained in:
parent
01f11169ed
commit
45d91af273
|
@ -3846,11 +3846,10 @@ SUBROUTINE qe_pztrtri ( sll, ldx, n, desc )
|
||||||
END IF
|
END IF
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
IF( myrow >= mycol ) THEN
|
! split communicator is present and must be freed on all processors
|
||||||
CALL mpi_comm_free( col_comm, ierr )
|
CALL mpi_comm_free( col_comm, ierr )
|
||||||
IF( ierr /= 0 ) &
|
IF( ierr /= 0 ) &
|
||||||
CALL lax_error__( " pztrtri ", " in mpi_comm_free 25 ", ABS( ierr ) )
|
CALL lax_error__( " pztrtri ", " in mpi_comm_free 25 ", ABS( ierr ) )
|
||||||
END IF
|
|
||||||
|
|
||||||
DEALLOCATE(B)
|
DEALLOCATE(B)
|
||||||
DEALLOCATE(C)
|
DEALLOCATE(C)
|
||||||
|
@ -3908,7 +3907,7 @@ END SUBROUTINE qe_pztrtri
|
||||||
|
|
||||||
SUBROUTINE qe_pdtrtri ( sll, ldx, n, desc )
|
SUBROUTINE qe_pdtrtri ( sll, ldx, n, desc )
|
||||||
|
|
||||||
! pztrtri computes the parallel inversion of a lower triangular matrix
|
! pdtrtri computes the parallel inversion of a lower triangular matrix
|
||||||
! distribuited among the processes using a 2-D block partitioning.
|
! distribuited among the processes using a 2-D block partitioning.
|
||||||
! The algorithm is based on the schema below and executes the model
|
! The algorithm is based on the schema below and executes the model
|
||||||
! recursively to each column C2 under the diagonal.
|
! recursively to each column C2 under the diagonal.
|
||||||
|
@ -4210,11 +4209,10 @@ SUBROUTINE qe_pdtrtri ( sll, ldx, n, desc )
|
||||||
END IF
|
END IF
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
IF( myrow >= mycol ) THEN
|
! split communicator is present and must be freed on all processors
|
||||||
CALL mpi_comm_free( col_comm, ierr )
|
CALL mpi_comm_free( col_comm, ierr )
|
||||||
IF( ierr /= 0 ) &
|
IF( ierr /= 0 ) &
|
||||||
CALL lax_error__( " pdtrtri ", " in mpi_comm_free 25 ", ABS( ierr ) )
|
CALL lax_error__( " pdtrtri ", " in mpi_comm_free 25 ", ABS( ierr ) )
|
||||||
END IF
|
|
||||||
|
|
||||||
DEALLOCATE(B)
|
DEALLOCATE(B)
|
||||||
DEALLOCATE(C)
|
DEALLOCATE(C)
|
||||||
|
|
Loading…
Reference in New Issue