Octopus
|
This module provides routines for communicating states when using states parallelization. More...
This module provides routines for communicating states when using states parallelization.
States can be distributed over processor (groups). The distribution scheme is defined in states_elec_t::dist object.
Data Types | |
interface | states_elec_parallel_gather |
Functions/Subroutines | |
subroutine, public | states_elec_parallel_blacs_blocksize (st, namespace, mesh, blocksize, total_np) |
determine the block size for a BLACS distribution More... | |
subroutine, public | states_elec_parallel_remote_access_start (this) |
start remote memory access for states on other processors More... | |
subroutine, public | states_elec_parallel_remote_access_stop (this) |
stop remote memory access for states on other processors More... | |
subroutine, public | states_elec_parallel_allocate_batch (st, psib, np, ib, ik, packed) |
Allocates a wfs_elec_t for np points, given block index ib, ad the k-point index ik. More... | |
subroutine, public | states_elec_parallel_get_block (this, mesh, ib, iqn, psib) |
retrieve wave functions from a different node More... | |
subroutine, public | states_elec_parallel_release_block (this, ib, psib) |
subroutine | dstates_elec_parallel_gather_3 (st, dims, psi) |
gather distributed states into a local array More... | |
subroutine | dstates_elec_parallel_gather_1 (st, aa) |
gather a one-dimensional array, distributed over states More... | |
subroutine | zstates_elec_parallel_gather_3 (st, dims, psi) |
gather distributed states into a local array More... | |
subroutine | zstates_elec_parallel_gather_1 (st, aa) |
gather a one-dimensional array, distributed over states More... | |
subroutine, public states_elec_parallel_oct_m::states_elec_parallel_blacs_blocksize | ( | type(states_elec_t), intent(in) | st, |
type(namespace_t), intent(in) | namespace, | ||
type(mesh_t), intent(in) | mesh, | ||
integer, dimension(2), intent(out) | blocksize, | ||
integer, intent(out) | total_np | ||
) |
determine the block size for a BLACS distribution
[in] | st | the states object |
[in] | mesh | the underlying mesh (for np, np_part) |
[out] | blocksize | result: BLACS blocksize |
[out] | total_np | result: total number of points |
Definition at line 154 of file states_elec_parallel.F90.
subroutine, public states_elec_parallel_oct_m::states_elec_parallel_remote_access_start | ( | type(states_elec_t), intent(inout) | this | ) |
start remote memory access for states on other processors
After calling this routine, the RMA_win handles states_elec_group_t::rma_win will be available.
Definition at line 212 of file states_elec_parallel.F90.
subroutine, public states_elec_parallel_oct_m::states_elec_parallel_remote_access_stop | ( | type(states_elec_t), intent(inout) | this | ) |
stop remote memory access for states on other processors
Definition at line 253 of file states_elec_parallel.F90.
subroutine, public states_elec_parallel_oct_m::states_elec_parallel_allocate_batch | ( | type(states_elec_t), intent(in) | st, |
class(wfs_elec_t), intent(out), pointer | psib, | ||
integer, intent(in) | np, | ||
integer, intent(in) | ib, | ||
integer, intent(in) | ik, | ||
logical, intent(in), optional | packed | ||
) |
Allocates a wfs_elec_t for np points, given block index ib, ad the k-point index ik.
[in] | packed | If .true. the batch will be initialized in packed form |
Definition at line 282 of file states_elec_parallel.F90.
subroutine, public states_elec_parallel_oct_m::states_elec_parallel_get_block | ( | type(states_elec_t), intent(in), target | this, |
type(mesh_t), intent(in) | mesh, | ||
integer, intent(in) | ib, | ||
integer, intent(in) | iqn, | ||
class(wfs_elec_t), intent(out), pointer | psib | ||
) |
retrieve wave functions from a different node
This routine utilizes the RMA windows to retrieve a wfs_oct_m::wfs_elec_t object from a different node.
Definition at line 313 of file states_elec_parallel.F90.
subroutine, public states_elec_parallel_oct_m::states_elec_parallel_release_block | ( | type(states_elec_t), intent(in), target | this, |
integer, intent(in) | ib, | ||
class(wfs_elec_t), pointer | psib | ||
) |
Definition at line 370 of file states_elec_parallel.F90.
|
private |
gather distributed states into a local array
[in] | st | for information on parallel distribution and the mpi group |
[in] | dims | first and second dimensions of the send/receive buffers |
[in,out] | psi | wave functions to be gathered; dimensions (1:st%nst, 1:dims(1), 1:dims(2)) |
Definition at line 458 of file states_elec_parallel.F90.
|
private |
gather a one-dimensional array, distributed over states
[in] | st | for information on parallel distribution and the mpi group |
[in,out] | aa | array to be gathered, dimensions (1: st%nst) |
Definition at line 516 of file states_elec_parallel.F90.
|
private |
gather distributed states into a local array
[in] | st | for information on parallel distribution and the mpi group |
[in] | dims | first and second dimensions of the send/receive buffers |
[in,out] | psi | wave functions to be gathered; dimensions (1:st%nst, 1:dims(1), 1:dims(2)) |
Definition at line 622 of file states_elec_parallel.F90.
|
private |
gather a one-dimensional array, distributed over states
[in] | st | for information on parallel distribution and the mpi group |
[in,out] | aa | array to be gathered, dimensions (1: st%nst) |
Definition at line 680 of file states_elec_parallel.F90.