![]() |
ORB5
v4.9.4
|
Routines for moving markers across parallel subdomains. More...
Data Types | |
| interface | exec |
Functions/Subroutines | |
| subroutine, public | init_module (ld_, nsd_, me_sd_, comm_sd_, natts_max_, nspecies, nsubstep, p_nthreads_, natts_max_l_, natts_max_i8_, natts_max_r4_) |
| Initialize module variables. More... | |
| subroutine, public | init (pos, np, np_new, npmax, run_on_device) |
| Prepare the communications (who will send what where) More... | |
| subroutine | exec_real (arr, natts, npmax, np, run_on_device) |
| Perform the communications of marker real attributes accross subdomains. More... | |
| subroutine | exec_logical (arr, natts, npmax, np, run_on_device) |
| Perform the communications of marker logical attributes accross subdomains. More... | |
| subroutine | exec_integer8 (arr, natts, npmax, np, run_on_device) |
| Perform the communications of marker i8 attributes accross subdomains. More... | |
| subroutine | exec_real4 (arr, natts, npmax, np, run_on_device) |
| Perform the communications of marker r4 attributes accross subdomains. More... | |
| subroutine, public | diag (iter, isp) |
| Store some diagnostics about last parmove operation. More... | |
Variables | |
| integer, save | nsd |
| Number of subdomains. More... | |
| real, save | lsd_inv |
| Inverse of subdomain length. More... | |
| integer, save | me_sd |
| Subdomain MPI rank. More... | |
| type(mpi_comm), save | comm_sd |
| Subdomain communicator. More... | |
| integer, dimension(:), allocatable, save | scount |
| Number of markers leaving towards subdomain i. More... | |
| integer, save | stot |
| Total number of leaving markers. More... | |
| integer, dimension(:), allocatable, save | sdispl |
| Offset in iphole to access markers going to subdomain i. More... | |
| integer, dimension(:), allocatable, save | iphole |
| List of holes indices, sorted by destination subdomain. More... | |
| integer, dimension(:), allocatable, save | rcount |
| Number of markers incoming from subdomain i. More... | |
| integer, save | rtot |
| Total number of incoming markers. More... | |
| integer, dimension(:), allocatable, save | rdispl |
| Offset in iprecv to access markers coming from subdomain i. More... | |
| real, dimension(:), allocatable, save | sbuf_r |
| MPI send buffer for real attributes. More... | |
| real, dimension(:), allocatable, save | rbuf_r |
| MPI receive buffer for real attributes. More... | |
| logical, dimension(:), allocatable, save | sbuf_l |
| MPI send buffer for logical attributes. More... | |
| logical, dimension(:), allocatable, save | rbuf_l |
| MPI receive buffer for logical attributes. More... | |
| integer(kind=i8), dimension(:), allocatable, save | sbuf_i8 |
| MPI send buffer for integer8 attributes. More... | |
| integer(kind=i8), dimension(:), allocatable, save | rbuf_i8 |
| MPI receive buffer for integer8 attributes. More... | |
| integer(kind=r4), dimension(:), allocatable, save | sbuf_r4 |
| MPI send buffer for real4 attributes. More... | |
| integer(kind=r4), dimension(:), allocatable, save | rbuf_r4 |
| MPI receive buffer for real4 attributes. More... | |
| integer, save | salloc |
| Allocated size of send buffers. More... | |
| integer, save | ralloc |
| Allocated size of receive buffers. More... | |
| integer, save | natts_max_r8 |
| Maximal number of r8 attributes that will be moved at a time. More... | |
| integer, save | natts_max_l |
| Maximal number of logical attributes that will be moved at a time. More... | |
| integer, save | natts_max_i8 |
| Maximal number of i8 attributes that will be moved at a time. More... | |
| integer, save | natts_max_r4 |
| Maximal number of r4 attributes that will be moved at a time. More... | |
| integer, dimension(:,:), allocatable, save | cursor |
| Current index in subdomains for each OpenMP thread. More... | |
| integer, save | nbf |
| Number of backfill operations. More... | |
| integer, dimension(:), allocatable, save | obf |
| Backfill origin indices (tail) More... | |
| integer, dimension(:), allocatable, save | tbf |
| Backfill target indices (remaining holes) More... | |
| integer, save | p_nthreads |
| Number of OpenMP threads. More... | |
| integer, dimension(:,:), allocatable, save | scount_threads |
| scount decomposed in OpenMP threads More... | |
| integer, dimension(:,:), allocatable, save, public | np_leaving |
| Number of markers leaving the subdomain. More... | |
| integer, dimension(:,:), allocatable, save, public | ndest |
| Number of destinations. More... | |
Routines for moving markers across parallel subdomains.
| subroutine, public parmove_mod::diag | ( | integer, intent(in) | iter, |
| integer, intent(in) | isp | ||
| ) |
Store some diagnostics about last parmove operation.
| [in] | iter | Time integrator iteration |
| [in] | isp | Species index |
Here is the caller graph for this function:
|
private |
Perform the communications of marker i8 attributes accross subdomains.
This routine can be called as many times as necessary after init on different attribute arrays.
| [in,out] | arr | Marker attributes to be moved |
|
private |
Perform the communications of marker logical attributes accross subdomains.
This routine can be called as many times as necessary after init on different attribute arrays.
| [in,out] | arr | Marker attributes to be moved |
|
private |
Perform the communications of marker real attributes accross subdomains.
This routine can be called as many times as necessary after init on different attribute arrays.
| [in,out] | arr | Marker attributes to be moved |
|
private |
Perform the communications of marker r4 attributes accross subdomains.
This routine can be called as many times as necessary after init on different attribute arrays.
| [in,out] | arr | Marker attributes to be moved |
| subroutine, public parmove_mod::init | ( | real, dimension(:), intent(inout) | pos, |
| integer, intent(in) | np, | ||
| integer, intent(out) | np_new, | ||
| integer, intent(in) | npmax, | ||
| logical, intent(in) | run_on_device | ||
| ) |
Prepare the communications (who will send what where)
| [in,out] | pos | Marker positions in the partitionned direction |
| [in] | npmax | Number of markers allocated |
| [in] | np | Local number of markers before parmove |
| [out] | np_new | Local number of markers after parmove |
| [in] | run_on_device | Run kernels on the accelerator |
Here is the call graph for this function:
Here is the caller graph for this function:| subroutine, public parmove_mod::init_module | ( | real, intent(in) | ld_, |
| integer, intent(in) | nsd_, | ||
| integer, intent(in) | me_sd_, | ||
| type(mpi_comm), intent(in) | comm_sd_, | ||
| integer, intent(in) | natts_max_, | ||
| integer, intent(in) | nspecies, | ||
| integer, intent(in) | nsubstep, | ||
| integer, intent(in) | p_nthreads_, | ||
| integer, intent(in), optional | natts_max_l_, | ||
| integer, intent(in), optional | natts_max_i8_, | ||
| integer, intent(in), optional | natts_max_r4_ | ||
| ) |
Initialize module variables.
| [in] | ld_ | Domain length in the partitioned direction |
| [in] | nspecies | Number of species |
| [in] | nsubstep | Number of iterations of the time integrator |
|
private |
Subdomain communicator.
|
private |
Current index in subdomains for each OpenMP thread.
|
private |
List of holes indices, sorted by destination subdomain.
|
private |
Inverse of subdomain length.
|
private |
Subdomain MPI rank.
|
private |
Maximal number of i8 attributes that will be moved at a time.
|
private |
Maximal number of logical attributes that will be moved at a time.
|
private |
Maximal number of r4 attributes that will be moved at a time.
|
private |
Maximal number of r8 attributes that will be moved at a time.
|
private |
Number of backfill operations.
| integer, dimension(:,:), allocatable, save, public parmove_mod::ndest |
Number of destinations.
| integer, dimension(:,:), allocatable, save, public parmove_mod::np_leaving |
Number of markers leaving the subdomain.
|
private |
Number of subdomains.
|
private |
Backfill origin indices (tail)
|
private |
Number of OpenMP threads.
|
private |
Allocated size of receive buffers.
|
private |
MPI receive buffer for integer8 attributes.
|
private |
MPI receive buffer for logical attributes.
|
private |
MPI receive buffer for real attributes.
|
private |
MPI receive buffer for real4 attributes.
|
private |
Number of markers incoming from subdomain i.
|
private |
Offset in iprecv to access markers coming from subdomain i.
|
private |
Total number of incoming markers.
|
private |
Allocated size of send buffers.
|
private |
MPI send buffer for integer8 attributes.
|
private |
MPI send buffer for logical attributes.
|
private |
MPI send buffer for real attributes.
|
private |
MPI send buffer for real4 attributes.
|
private |
Number of markers leaving towards subdomain i.
|
private |
scount decomposed in OpenMP threads
|
private |
Offset in iphole to access markers going to subdomain i.
|
private |
Total number of leaving markers.
|
private |
Backfill target indices (remaining holes)