communication routines to reshape / replicate / merge tall-and-skinny matrices.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=*), | private, | parameter | :: | moduleN | = | 'dbcsr_tas_reshape_ops' |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer, | intent(out) | :: | ndata | |||
integer(kind=int_8), | intent(out), | DIMENSION(2) | :: | index | ||
type(dbcsr_data_obj), | intent(inout), | optional | :: | block | ||
logical, | intent(in), | optional | :: | advance_iter |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index | ||
type(dbcsr_data_obj), | intent(in) | :: | block | |||
logical, | intent(in), | optional | :: | transposed |
insert a block into block buffer (at current iterator position)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index |
index of block |
|
real(kind=real_8), | intent(in), | DIMENSION(:, :) | :: | block |
block |
|
logical, | intent(in), | optional | :: | transposed |
insert a block into block buffer (at current iterator position)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index |
index of block |
|
real(kind=real_4), | intent(in), | DIMENSION(:, :) | :: | block |
block |
|
logical, | intent(in), | optional | :: | transposed |
insert a block into block buffer (at current iterator position)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index |
index of block |
|
complex(kind=real_8), | intent(in), | DIMENSION(:, :) | :: | block |
block |
|
logical, | intent(in), | optional | :: | transposed |
insert a block into block buffer (at current iterator position)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index |
index of block |
|
complex(kind=real_4), | intent(in), | DIMENSION(:, :) | :: | block |
block |
|
logical, | intent(in), | optional | :: | transposed |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | nblock | = | -1 | ||
integer(kind=int_8), | public, | DIMENSION(:, :), ALLOCATABLE | :: | indx | |||
real(kind=real_8), | public, | DIMENSION(:), ALLOCATABLE | :: | msg_r_dp | |||
real(kind=real_4), | public, | DIMENSION(:), ALLOCATABLE | :: | msg_r_sp | |||
complex(kind=real_8), | public, | DIMENSION(:), ALLOCATABLE | :: | msg_c_dp | |||
complex(kind=real_4), | public, | DIMENSION(:), ALLOCATABLE | :: | msg_c_sp | |||
integer, | public | :: | data_type | = | -1 | ||
integer, | public | :: | endpos | = | -1 |
how many blocks left in iterator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(in) | :: | buffer |
copy data (involves reshape)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_tas_type), | intent(inout) | :: | matrix_in | |||
type(dbcsr_tas_type), | intent(inout) | :: | matrix_out | |||
logical, | intent(in), | optional | :: | summation |
whether matrix_out = matrix_out + matrix_in |
|
logical, | intent(in), | optional | :: | transposed | ||
logical, | intent(in), | optional | :: | move_data |
memory optimization: move data to matrix_out such that matrix_in is empty on return |
Replicate matrix_in such that each submatrix of matrix_out is an exact copy of matrix_in
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(inout) | :: | matrix_in | |||
type(dbcsr_tas_split_info), | intent(in) | :: | info | |||
type(dbcsr_tas_type), | intent(out) | :: | matrix_out | |||
logical, | intent(in), | optional | :: | nodata |
Don't copy data but create matrix_out |
|
logical, | intent(in), | optional | :: | move_data |
memory optimization: move data to matrix_out such that matrix_in is empty on return |
Merge submatrices of matrix_in to matrix_out by sum
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(inout) | :: | matrix_out | |||
type(dbcsr_tas_type), | intent(inout) | :: | matrix_in | |||
logical, | intent(in), | optional | :: | summation | ||
logical, | intent(in), | optional | :: | move_data |
memory optimization: move data to matrix_out such that matrix_in is empty on return |
get all indices from buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(in) | :: | buffer | |||
integer(kind=int_8), | intent(out), | ALLOCATABLE, DIMENSION(:, :) | :: | index |
Create block buffer for MPI communication.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(out) | :: | buffer |
block buffer |
||
integer, | intent(in) | :: | nblock |
number of blocks total number of block entries |
||
integer, | intent(in) | :: | ndata |
number of blocks total number of block entries |
||
integer, | intent(in) | :: | data_type |
number of blocks total number of block entries |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index | ||
type(dbcsr_data_obj), | intent(in) | :: | block | |||
logical, | intent(in), | optional | :: | transposed |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer, | intent(out) | :: | ndata | |||
integer(kind=int_8), | intent(out), | DIMENSION(2) | :: | index | ||
type(dbcsr_data_obj), | intent(inout), | optional | :: | block | ||
logical, | intent(in), | optional | :: | advance_iter |
insert a block into block buffer (at current iterator position)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index |
index of block |
|
real(kind=real_8), | intent(in), | DIMENSION(:, :) | :: | block |
block |
|
logical, | intent(in), | optional | :: | transposed |
insert a block into block buffer (at current iterator position)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index |
index of block |
|
real(kind=real_4), | intent(in), | DIMENSION(:, :) | :: | block |
block |
|
logical, | intent(in), | optional | :: | transposed |
insert a block into block buffer (at current iterator position)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index |
index of block |
|
complex(kind=real_8), | intent(in), | DIMENSION(:, :) | :: | block |
block |
|
logical, | intent(in), | optional | :: | transposed |
insert a block into block buffer (at current iterator position)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer(kind=int_8), | intent(in), | DIMENSION(2) | :: | index |
index of block |
|
complex(kind=real_4), | intent(in), | DIMENSION(:, :) | :: | block |
block |
|
logical, | intent(in), | optional | :: | transposed |
get next block from buffer. Iterator is advanced only if block is retrieved or advance_iter.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer, | intent(out) | :: | ndata | |||
integer(kind=int_8), | intent(out), | DIMENSION(2) | :: | index | ||
real(kind=real_8), | intent(out), | optional, | DIMENSION(:, :) | :: | block | |
logical, | intent(in), | optional | :: | advance_iter |
get next block from buffer. Iterator is advanced only if block is retrieved or advance_iter.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer, | intent(out) | :: | ndata | |||
integer(kind=int_8), | intent(out), | DIMENSION(2) | :: | index | ||
real(kind=real_4), | intent(out), | optional, | DIMENSION(:, :) | :: | block | |
logical, | intent(in), | optional | :: | advance_iter |
get next block from buffer. Iterator is advanced only if block is retrieved or advance_iter.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer, | intent(out) | :: | ndata | |||
integer(kind=int_8), | intent(out), | DIMENSION(2) | :: | index | ||
complex(kind=real_8), | intent(out), | optional, | DIMENSION(:, :) | :: | block | |
logical, | intent(in), | optional | :: | advance_iter |
get next block from buffer. Iterator is advanced only if block is retrieved or advance_iter.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(block_buffer_type), | intent(inout) | :: | buffer | |||
integer, | intent(out) | :: | ndata | |||
integer(kind=int_8), | intent(out), | DIMENSION(2) | :: | index | ||
complex(kind=real_4), | intent(out), | optional, | DIMENSION(:, :) | :: | block | |
logical, | intent(in), | optional | :: | advance_iter |
communicate buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mp_comm_type), | intent(in) | :: | mp_comm | |||
type(block_buffer_type), | intent(inout), | DIMENSION(0:) | :: | buffer_recv | ||
type(block_buffer_type), | intent(inout), | DIMENSION(0:) | :: | buffer_send | ||
type(mp_request_type), | intent(out), | DIMENSION(:, :) | :: | req_array |