![]() |
Octopus
|
This module provides routines for communicating all batches in a ring-pattern scheme. More...
This module provides routines for communicating all batches in a ring-pattern scheme.
Communication is done in two steps: the ring_pattern module determines which task talk to each task for each step of the ring-pattern scheme.
For a given step of the ring-pattern scheme, this module determines how many steps of send/received are needed given the number of batches owned by the pairs of tasks involved (local, sender, receiver).
This module also provides the routines that handle the communication of batches
Data Types | |
| type | states_elec_all_to_all_communications_t |
Functions/Subroutines | |
| subroutine | states_elec_all_to_all_communications_start (this, st, task_from, task_to, gpu_aware) |
| Given a task to send to, and a task to receive from, initializes a states_elec_all_to_all_communications_t object. More... | |
| integer function | states_elec_all_to_all_communications_eval_nreceive (st, task_from, nblock_to_receive) |
| How many batches we will receive from task_from. More... | |
| integer function | states_elec_all_to_all_communications_eval_nsend (st, task_to, nblock_to_send) |
| How many batches we will send from task_send. More... | |
| integer pure function | states_elec_all_to_all_communications_get_ncom (this) |
| Returns the number of communications. More... | |
| integer pure function | states_elec_all_to_all_communications_get_nreceive (this) |
| Returns the number of receiv calls. More... | |
| integer pure function | states_elec_all_to_all_communications_get_nsend (this) |
| Returns the number send calls. More... | |
| subroutine | states_elec_all_to_all_communications_alloc_receive_batch (this, st, icom, np, psib) |
| Given the icom step, allocate the receiv buffer (wfs_elec_t) More... | |
| subroutine | states_elec_all_to_all_communications_get_send_indices (this, st, icom, ib, ik) |
| Given the icom step, returns the block and k-point indices to be sent. More... | |
| subroutine | states_elec_all_to_all_communications_get_receive_indices (this, st, icom, ib, ik) |
| Given the icom step, returns the block and k-point indices to be received. More... | |
| subroutine | states_elec_all_to_all_communications_wait_all_isend (this, st) |
| Do a MPI waitall for the isend requests. More... | |
| subroutine | dstates_elec_all_to_all_communications_post_all_mpi_isend (this, st, np, node_to) |
| Post all isend commands for all batches of a given task. More... | |
| subroutine | dstates_elec_all_to_all_communications_mpi_irecv_batch (this, st, np, node_fr, icom, psib_receiv, recv_req) |
| Allocate a batch and post the MPI_Irecv for it. The caller must wait on recv_req before using the batch. More... | |
| subroutine | dstates_elec_all_to_all_communications_isend_batch (this, st, np, ib_send, ik_send, node_to, icom, send_req) |
| Post a single MPI isend for the batch (ib_send, ik_send) to node_to. More... | |
| subroutine | dstates_elec_all_to_all_communications_isend_batch_to (this, st, np, psib, node_to, icom, send_req) |
| Post a single MPI isend for an explicit batch to node_to. More... | |
| subroutine | dstates_elec_all_to_all_communications_recv_batch_from (this, st, np, psib, node_fr, icom) |
| Blocking MPI recv into an already-allocated batch from node_fr. More... | |
| subroutine | zstates_elec_all_to_all_communications_post_all_mpi_isend (this, st, np, node_to) |
| Post all isend commands for all batches of a given task. More... | |
| subroutine | zstates_elec_all_to_all_communications_mpi_irecv_batch (this, st, np, node_fr, icom, psib_receiv, recv_req) |
| Allocate a batch and post the MPI_Irecv for it. The caller must wait on recv_req before using the batch. More... | |
| subroutine | zstates_elec_all_to_all_communications_isend_batch (this, st, np, ib_send, ik_send, node_to, icom, send_req) |
| Post a single MPI isend for the batch (ib_send, ik_send) to node_to. More... | |
| subroutine | zstates_elec_all_to_all_communications_isend_batch_to (this, st, np, psib, node_to, icom, send_req) |
| Post a single MPI isend for an explicit batch to node_to. More... | |
| subroutine | zstates_elec_all_to_all_communications_recv_batch_from (this, st, np, psib, node_fr, icom) |
| Blocking MPI recv into an already-allocated batch from node_fr. More... | |
| subroutine | sstates_elec_all_to_all_communications_post_all_mpi_isend (this, st, np, node_to) |
| Post all isend commands for all batches of a given task. More... | |
| subroutine | sstates_elec_all_to_all_communications_mpi_irecv_batch (this, st, np, node_fr, icom, psib_receiv, recv_req) |
| Allocate a batch and post the MPI_Irecv for it. The caller must wait on recv_req before using the batch. More... | |
| subroutine | sstates_elec_all_to_all_communications_isend_batch (this, st, np, ib_send, ik_send, node_to, icom, send_req) |
| Post a single MPI isend for the batch (ib_send, ik_send) to node_to. More... | |
| subroutine | sstates_elec_all_to_all_communications_isend_batch_to (this, st, np, psib, node_to, icom, send_req) |
| Post a single MPI isend for an explicit batch to node_to. More... | |
| subroutine | sstates_elec_all_to_all_communications_recv_batch_from (this, st, np, psib, node_fr, icom) |
| Blocking MPI recv into an already-allocated batch from node_fr. More... | |
| subroutine | cstates_elec_all_to_all_communications_post_all_mpi_isend (this, st, np, node_to) |
| Post all isend commands for all batches of a given task. More... | |
| subroutine | cstates_elec_all_to_all_communications_mpi_irecv_batch (this, st, np, node_fr, icom, psib_receiv, recv_req) |
| Allocate a batch and post the MPI_Irecv for it. The caller must wait on recv_req before using the batch. More... | |
| subroutine | cstates_elec_all_to_all_communications_isend_batch (this, st, np, ib_send, ik_send, node_to, icom, send_req) |
| Post a single MPI isend for the batch (ib_send, ik_send) to node_to. More... | |
| subroutine | cstates_elec_all_to_all_communications_isend_batch_to (this, st, np, psib, node_to, icom, send_req) |
| Post a single MPI isend for an explicit batch to node_to. More... | |
| subroutine | cstates_elec_all_to_all_communications_recv_batch_from (this, st, np, psib, node_fr, icom) |
| Blocking MPI recv into an already-allocated batch from node_fr. More... | |
|
private |
Given a task to send to, and a task to receive from, initializes a states_elec_all_to_all_communications_t object.
Setting gpu_aware to true will use GPU-aware MPI for the send/receive routines.
Definition at line 201 of file states_elec_all_to_all_communications.F90.
|
private |
How many batches we will receive from task_from.
Definition at line 225 of file states_elec_all_to_all_communications.F90.
|
private |
How many batches we will send from task_send.
Definition at line 262 of file states_elec_all_to_all_communications.F90.
|
private |
Returns the number of communications.
Definition at line 286 of file states_elec_all_to_all_communications.F90.
|
private |
Returns the number of receiv calls.
Definition at line 294 of file states_elec_all_to_all_communications.F90.
|
private |
Returns the number send calls.
Definition at line 302 of file states_elec_all_to_all_communications.F90.
|
private |
Given the icom step, allocate the receiv buffer (wfs_elec_t)
| [in] | icom | Communication step |
| [in] | np | Number of points in the batch (meshnp or meshnp_part) |
| [out] | psib | Allocated batch |
Definition at line 310 of file states_elec_all_to_all_communications.F90.
|
private |
Given the icom step, returns the block and k-point indices to be sent.
| [in] | icom | Communication step |
| [out] | ib | Block index of the batch to send |
| [out] | ik | k-point index of batch to send |
Definition at line 342 of file states_elec_all_to_all_communications.F90.
|
private |
Given the icom step, returns the block and k-point indices to be received.
| [in] | icom | Communication step |
| [out] | ib | Block index of the batch to receive |
| [out] | ik | k-point index of batch to receive |
Definition at line 365 of file states_elec_all_to_all_communications.F90.
|
private |
Do a MPI waitall for the isend requests.
Definition at line 390 of file states_elec_all_to_all_communications.F90.
|
private |
Post all isend commands for all batches of a given task.
Note that we use here a unique request ID that is labelled by the sending task ID and the batch index, to help the MPI library.
Definition at line 483 of file states_elec_all_to_all_communications.F90.
|
private |
Allocate a batch and post the MPI_Irecv for it. The caller must wait on recv_req before using the batch.
Note that we use here a unique request ID that is labelled by the sending task ID and the batch index, to help the MPI library.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
Definition at line 512 of file states_elec_all_to_all_communications.F90.
|
private |
Post a single MPI isend for the batch (ib_send, ik_send) to node_to.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
Definition at line 555 of file states_elec_all_to_all_communications.F90.
|
private |
Post a single MPI isend for an explicit batch to node_to.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
| [in,out] | psib | Batch to send |
Definition at line 580 of file states_elec_all_to_all_communications.F90.
|
private |
Blocking MPI recv into an already-allocated batch from node_fr.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
| [in,out] | psib | Batch to receive into |
Definition at line 627 of file states_elec_all_to_all_communications.F90.
|
private |
Post all isend commands for all batches of a given task.
Note that we use here a unique request ID that is labelled by the sending task ID and the batch index, to help the MPI library.
Definition at line 743 of file states_elec_all_to_all_communications.F90.
|
private |
Allocate a batch and post the MPI_Irecv for it. The caller must wait on recv_req before using the batch.
Note that we use here a unique request ID that is labelled by the sending task ID and the batch index, to help the MPI library.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
Definition at line 772 of file states_elec_all_to_all_communications.F90.
|
private |
Post a single MPI isend for the batch (ib_send, ik_send) to node_to.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
Definition at line 815 of file states_elec_all_to_all_communications.F90.
|
private |
Post a single MPI isend for an explicit batch to node_to.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
| [in,out] | psib | Batch to send |
Definition at line 840 of file states_elec_all_to_all_communications.F90.
|
private |
Blocking MPI recv into an already-allocated batch from node_fr.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
| [in,out] | psib | Batch to receive into |
Definition at line 887 of file states_elec_all_to_all_communications.F90.
|
private |
Post all isend commands for all batches of a given task.
Note that we use here a unique request ID that is labelled by the sending task ID and the batch index, to help the MPI library.
Definition at line 1007 of file states_elec_all_to_all_communications.F90.
|
private |
Allocate a batch and post the MPI_Irecv for it. The caller must wait on recv_req before using the batch.
Note that we use here a unique request ID that is labelled by the sending task ID and the batch index, to help the MPI library.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
Definition at line 1036 of file states_elec_all_to_all_communications.F90.
|
private |
Post a single MPI isend for the batch (ib_send, ik_send) to node_to.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
Definition at line 1079 of file states_elec_all_to_all_communications.F90.
|
private |
Post a single MPI isend for an explicit batch to node_to.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
| [in,out] | psib | Batch to send |
Definition at line 1104 of file states_elec_all_to_all_communications.F90.
|
private |
Blocking MPI recv into an already-allocated batch from node_fr.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
| [in,out] | psib | Batch to receive into |
Definition at line 1151 of file states_elec_all_to_all_communications.F90.
|
private |
Post all isend commands for all batches of a given task.
Note that we use here a unique request ID that is labelled by the sending task ID and the batch index, to help the MPI library.
Definition at line 1271 of file states_elec_all_to_all_communications.F90.
|
private |
Allocate a batch and post the MPI_Irecv for it. The caller must wait on recv_req before using the batch.
Note that we use here a unique request ID that is labelled by the sending task ID and the batch index, to help the MPI library.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
Definition at line 1300 of file states_elec_all_to_all_communications.F90.
|
private |
Post a single MPI isend for the batch (ib_send, ik_send) to node_to.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
Definition at line 1343 of file states_elec_all_to_all_communications.F90.
|
private |
Post a single MPI isend for an explicit batch to node_to.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
| [in,out] | psib | Batch to send |
Definition at line 1368 of file states_elec_all_to_all_communications.F90.
|
private |
Blocking MPI recv into an already-allocated batch from node_fr.
CPU or GPU-aware MPI is handled depending on thisgpu_aware.
| [in,out] | psib | Batch to receive into |
Definition at line 1415 of file states_elec_all_to_all_communications.F90.