(git:6a2e663)
task_list_methods Module Reference

generate the tasks lists used by collocate and integrate routines More...

Functions/Subroutines

subroutine, public generate_qs_task_list (ks_env, task_list, reorder_rs_grid_ranks, skip_load_balance_distributed, soft_valid, basis_type, pw_env_external, sab_orb_external)
 ... More...
 
subroutine, public task_list_inner_loop (tasks, ntasks, curr_tasks, rs_descs, dft_control, cube_info, gridlevel_info, cindex, iatom, jatom, rpgfa, rpgfb, zeta, zetb, kind_radius_b, set_radius_a, set_radius_b, ra, rab, la_max, la_min, lb_max, lb_min, npgfa, npgfb, nseta, nsetb)
 ... More...
 
subroutine, public distribute_tasks (rs_descs, ntasks, natoms, tasks, atom_pair_send, atom_pair_recv, symmetric, reorder_rs_grid_ranks, skip_load_balance_distributed)
 Assembles tasks to be performed on local grid. More...
 
subroutine, public rs_distribute_matrix (rs_descs, pmats, atom_pair_send, atom_pair_recv, nimages, scatter, hmats)
 redistributes the matrix so that it can be used in realspace operations i.e. according to the task lists for collocate and integrate. This routine can become a bottleneck in large calculations. More...
 
subroutine, public rs_scatter_matrices (src_matrices, dest_buffer, task_list, group)
 Scatters dbcsr matrix blocks and receives them into a buffer as needed before collocation. More...
 
subroutine, public rs_gather_matrices (src_buffer, dest_matrices, task_list, group)
 Gather the dbcsr matrix blocks and receives them into a buffer as needed after integration. More...
 
subroutine, public rs_copy_to_buffer (src_matrices, dest_buffer, task_list)
 Copies the DBCSR blocks into buffer, replaces rs_scatter_matrix for non-distributed grids. More...
 
subroutine, public rs_copy_to_matrices (src_buffer, dest_matrices, task_list)
 Copies from buffer into DBCSR matrics, replaces rs_gather_matrix for non-distributed grids. More...
 

Detailed Description

generate the tasks lists used by collocate and integrate routines

History
01.2008 [Joost VandeVondele] refactered out of qs_collocate / qs_integrate
Author
Joost VandeVondele

Function/Subroutine Documentation

◆ generate_qs_task_list()

subroutine, public task_list_methods::generate_qs_task_list ( type(qs_ks_env_type), pointer  ks_env,
type(task_list_type), pointer  task_list,
logical, intent(in)  reorder_rs_grid_ranks,
logical, intent(in)  skip_load_balance_distributed,
logical, intent(in), optional  soft_valid,
character(len=*), intent(in), optional  basis_type,
type(pw_env_type), optional, pointer  pw_env_external,
type(neighbor_list_set_p_type), dimension(:), optional, pointer  sab_orb_external 
)

...

Parameters
ks_env...
task_list...
reorder_rs_grid_ranksFlag that indicates if this routine should or should not overwrite the rs descriptor (see comment below)
skip_load_balance_distributed...
soft_valid...
basis_type...
pw_env_external...
sab_orb_external...
History
01.2008 factored out of calculate_rho_elec [Joost VandeVondele] 04.2010 divides tasks into grid levels and atom pairs for integrate/collocate [Iain Bethune] (c) The Numerical Algorithms Group (NAG) Ltd, 2010 on behalf of the HECToR project 06.2015 adjusted to be used with multiple images (k-points) [JGH]
Note
If this routine is called several times with different task lists, the default behaviour is to re-optimize the grid ranks and overwrite the rs descriptor and grids. reorder_rs_grid_ranks = .FALSE. prevents the code of performing a new optimization by leaving the rank order in its current state.

Definition at line 116 of file task_list_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_list_inner_loop()

subroutine, public task_list_methods::task_list_inner_loop ( type(task_type), dimension(:), pointer  tasks,
integer  ntasks,
integer  curr_tasks,
type(realspace_grid_desc_p_type), dimension(:), pointer  rs_descs,
type(dft_control_type), pointer  dft_control,
type(cube_info_type), dimension(:), pointer  cube_info,
type(gridlevel_info_type), pointer  gridlevel_info,
integer  cindex,
integer  iatom,
integer  jatom,
real(kind=dp), dimension(:, :), pointer  rpgfa,
real(kind=dp), dimension(:, :), pointer  rpgfb,
real(kind=dp), dimension(:, :), pointer  zeta,
real(kind=dp), dimension(:, :), pointer  zetb,
real(kind=dp)  kind_radius_b,
real(kind=dp), dimension(:), pointer  set_radius_a,
real(kind=dp), dimension(:), pointer  set_radius_b,
real(kind=dp), dimension(3)  ra,
real(kind=dp), dimension(3)  rab,
integer, dimension(:), pointer  la_max,
integer, dimension(:), pointer  la_min,
integer, dimension(:), pointer  lb_max,
integer, dimension(:), pointer  lb_min,
integer, dimension(:), pointer  npgfa,
integer, dimension(:), pointer  npgfb,
integer  nseta,
integer  nsetb 
)

...

Parameters
tasks...
ntasks...
curr_tasks...
rs_descs...
dft_control...
cube_info...
gridlevel_info...
cindex...
iatom...
jatom...
rpgfa...
rpgfb...
zeta...
zetb...
kind_radius_b...
set_radius_a...
set_radius_b...
ra...
rab...
la_max...
la_min...
lb_max...
lb_min...
npgfa...
npgfb...
nseta...
nsetb...
History
Joost VandeVondele: 10.2008 refactored

Definition at line 660 of file task_list_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ distribute_tasks()

subroutine, public task_list_methods::distribute_tasks ( type(realspace_grid_desc_p_type), dimension(:), pointer  rs_descs,
integer  ntasks,
integer  natoms,
type(task_type), dimension(:), pointer  tasks,
type(atom_pair_type), dimension(:), pointer  atom_pair_send,
type(atom_pair_type), dimension(:), pointer  atom_pair_recv,
logical, intent(in)  symmetric,
logical, intent(in)  reorder_rs_grid_ranks,
logical, intent(in)  skip_load_balance_distributed 
)

Assembles tasks to be performed on local grid.

Parameters
rs_descsthe grids
ntasksNumber of tasks for local processing
natoms...
nimages...
tasksthe task set generated on this processor
rval...
atom_pair_send...
atom_pair_recv...
symmetric...
reorder_rs_grid_ranks...
skip_load_balance_distributed...
History
none
Author
MattW 21/11/2007

Definition at line 1898 of file task_list_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rs_distribute_matrix()

subroutine, public task_list_methods::rs_distribute_matrix ( type(realspace_grid_desc_p_type), dimension(:), pointer  rs_descs,
type(dbcsr_p_type), dimension(:), pointer  pmats,
type(atom_pair_type), dimension(:), pointer  atom_pair_send,
type(atom_pair_type), dimension(:), pointer  atom_pair_recv,
integer  nimages,
logical  scatter,
type(dbcsr_p_type), dimension(:), optional, pointer  hmats 
)

redistributes the matrix so that it can be used in realspace operations i.e. according to the task lists for collocate and integrate. This routine can become a bottleneck in large calculations.

Parameters
rs_descs...
pmats...
atom_pair_send...
atom_pair_recv...
natoms...
nimages...
scatter...
hmats...

Definition at line 2185 of file task_list_methods.F.

Here is the caller graph for this function:

◆ rs_scatter_matrices()

subroutine, public task_list_methods::rs_scatter_matrices ( type(dbcsr_p_type), dimension(:), intent(in)  src_matrices,
type(offload_buffer_type), intent(inout)  dest_buffer,
type(task_list_type), intent(in)  task_list,
type(mp_comm_type), intent(in)  group 
)

Scatters dbcsr matrix blocks and receives them into a buffer as needed before collocation.

Author
Ole Schuett

Definition at line 2523 of file task_list_methods.F.

Here is the caller graph for this function:

◆ rs_gather_matrices()

subroutine, public task_list_methods::rs_gather_matrices ( type(offload_buffer_type), intent(in)  src_buffer,
type(dbcsr_p_type), dimension(:), intent(inout)  dest_matrices,
type(task_list_type), intent(in)  task_list,
type(mp_comm_type), intent(in)  group 
)

Gather the dbcsr matrix blocks and receives them into a buffer as needed after integration.

Author
Ole Schuett

Definition at line 2558 of file task_list_methods.F.

Here is the caller graph for this function:

◆ rs_copy_to_buffer()

subroutine, public task_list_methods::rs_copy_to_buffer ( type(dbcsr_p_type), dimension(:), intent(in)  src_matrices,
type(offload_buffer_type), intent(inout)  dest_buffer,
type(task_list_type), intent(in)  task_list 
)

Copies the DBCSR blocks into buffer, replaces rs_scatter_matrix for non-distributed grids.

Author
Ole Schuett

Definition at line 2594 of file task_list_methods.F.

Here is the caller graph for this function:

◆ rs_copy_to_matrices()

subroutine, public task_list_methods::rs_copy_to_matrices ( type(offload_buffer_type), intent(in)  src_buffer,
type(dbcsr_p_type), dimension(:), intent(inout)  dest_matrices,
type(task_list_type), intent(in)  task_list 
)

Copies from buffer into DBCSR matrics, replaces rs_gather_matrix for non-distributed grids.

Author
Ole Schuett

Definition at line 2610 of file task_list_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function: