Fills meta information from a given distribution_2d
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(out), | DIMENSION(dbcsr_meta_size) | :: | meta |
meta information array to fill |
|
type(dbcsr_distribution_obj), | intent(in) | :: | dist |
processor distribution |
||
integer, | intent(in), | DIMENSION(:), POINTER | :: | row_blk_size |
row block sizes column block sizes |
|
integer, | intent(in), | DIMENSION(:), POINTER | :: | col_blk_size |
row block sizes column block sizes |
SUBROUTINE meta_from_dist(meta, dist, row_blk_size, col_blk_size)
!! Fills meta information from a given distribution_2d
INTEGER, DIMENSION(dbcsr_meta_size), INTENT(OUT) :: meta
!! meta information array to fill
TYPE(dbcsr_distribution_obj), INTENT(IN) :: dist
!! processor distribution
INTEGER, DIMENSION(:), INTENT(IN), POINTER :: row_blk_size, col_blk_size
!! row block sizes
!! column block sizes
INTEGER :: i, nfullcols_local, nfullcols_total, &
nfullrows_local, nfullrows_total
INTEGER, DIMENSION(:), POINTER :: blkcols_local, blkrows_local
! ---------------------------------------------------------------------------
blkrows_local => dbcsr_distribution_local_rows(dist)
blkcols_local => dbcsr_distribution_local_cols(dist)
nfullrows_total = SUM(row_blk_size)
nfullcols_total = SUM(col_blk_size)
nfullrows_local = 0
nfullcols_local = 0
DO i = 1, dbcsr_distribution_nlocal_rows(dist)
nfullrows_local = nfullrows_local + row_blk_size(blkrows_local(i))
END DO
DO i = 1, dbcsr_distribution_nlocal_cols(dist)
nfullcols_local = nfullcols_local + col_blk_size(blkcols_local(i))
END DO
meta(:) = 0
meta(5) = dbcsr_distribution_nrows(dist)
meta(6) = dbcsr_distribution_ncols(dist)
meta(7) = nfullrows_total
meta(8) = nfullcols_total
meta(9) = dbcsr_distribution_nlocal_rows(dist)
meta(10) = dbcsr_distribution_nlocal_cols(dist)
meta(11) = nfullrows_local
meta(12) = nfullcols_local
meta(dbcsr_slot_home_prow) = dbcsr_mp_myprow(dbcsr_distribution_mp(dist))
meta(dbcsr_slot_home_rowi) = 1
meta(dbcsr_slot_home_pcol) = dbcsr_mp_mypcol(dbcsr_distribution_mp(dist))
meta(dbcsr_slot_home_coli) = 1
meta(dbcsr_slot_home_vprow) = -1
meta(dbcsr_slot_home_vpcol) = -1
END SUBROUTINE meta_from_dist