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