![]() |
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 |
|
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 |
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)