Print CSR sparsity
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(csr_type), | intent(in) | :: | csr_mat | |||
integer, | intent(in) | :: | unit_nr |
SUBROUTINE csr_print_sparsity(csr_mat, unit_nr) !! Print CSR sparsity TYPE(csr_type), INTENT(IN) :: csr_mat INTEGER, INTENT(IN) :: unit_nr CHARACTER(LEN=*), PARAMETER :: routineN = 'csr_print_sparsity' INTEGER :: handle, mynode, numnodes INTEGER(KIND=int_8) :: dbcsr_nze_total REAL(KIND=real_8) :: dbcsr_nze_percentage, nze_percentage CALL timeset(routineN, handle) IF (.NOT. csr_mat%valid) & DBCSR_ABORT("CSR matrix must be created first") nze_percentage = 100.0_dp*(REAL(csr_mat%nze_total, KIND=real_8) & /REAL(csr_mat%nrows_total, KIND=real_8)) & /REAL(csr_mat%ncols_total, KIND=real_8) IF (csr_mat%has_mapping) THEN dbcsr_nze_total = dbcsr_get_nze(csr_mat%dbcsr_mapping%brd_mat) CALL mp_sum(dbcsr_nze_total, csr_mat%mp_group) dbcsr_nze_percentage = 100.0_dp*(REAL(dbcsr_nze_total, KIND=real_8) & /REAL(csr_mat%nrows_total, KIND=real_8)) & /REAL(csr_mat%ncols_total, KIND=real_8) END IF CALL mp_environ(numnodes, mynode, csr_mat%mp_group) IF (mynode .EQ. 0) THEN WRITE (unit_nr, "(T15,A,T68,I13)") "Number of CSR non-zero elements:", csr_mat%nze_total WRITE (unit_nr, "(T15,A,T75,F6.2)") "Percentage CSR non-zero elements:", nze_percentage !IF(csr_mat%has_mapping) THEN ! WRITE(unit_nr,"(T15,A,T75,F6.2/)") "Percentage DBCSR non-zero elements:", dbcsr_nze_percentage !ENDIF END IF CALL timestop(handle) END SUBROUTINE csr_print_sparsity