![]() |
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) |
Initializes 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 180 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 221 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, |
type(wfs_elec_t), intent(inout) | psib, | ||
integer, intent(in) | np, | ||
integer, intent(in) | ib, | ||
integer, intent(in) | ik, | ||
logical, intent(in), optional | packed | ||
) |
Initializes 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 250 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, |
class(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 278 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 315 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 403 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 461 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 567 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 625 of file states_elec_parallel.F90.