Module ppm_module_util_commopt

This module provides the utility routines.

Defined Types

name description

no types

Defined Module Interfaces

Defined Module Subroutines

name description

no subroutines

Interface ppm_util_commopt

Subroutines contained in this interface:

name description

ppm_util_commopt

Determine an approximately optimal communication

Interface ppm_util_commopt_cart

Subroutines contained in this interface:

name description

ppm_util_commopt_cart

Determine an approximately optimal communication

Subroutine ppm_util_commopt

Determine an approximately optimal communication sequence for each processor to SendRecv data with its neighbors only. Such that: no conflicts occur (i.e. A wants to send to B, but B is currently busy receiving from C) and that a minimum number of communication rounds are needed. This is done by using the Vizing approximation to the minimal edge coloring problem of the processor topology graph.

[Note]Note

The current implementation relies on external routine written in C++ and its Fortran wrapper.

Reference: V.G. Vizing, On an estimate of the chromatic class of a p-graph. Discret. Analiz. 3, 1964, pp.25-30. (In Russian).

Arguments

name type dimension intent optional description

topoid

integer

(IN)

The topology to be optimized

info

integer

(INOUT)

return status, 0 on success

topoid

integer, , (IN)

The topology to be optimized

info

integer, , (INOUT)

return status, 0 on success

Used Modules

ppm_module_data, ppm_module_error, ppm_module_typedef, ppm_module_alloc, ppm_module_check_id, ppm_module_substop, ppm_module_color_edge, ppm_module_substart

Subroutine ppm_util_commopt_cart

Determine an approximately optimal communication sequence for each processor to SendRecv data with its neighbors only. Such that: no conflicts occur (i.e. A wants to send to B, but B is currently busy receiving from C) and that a minimum number of communication rounds are needed. This is done by using the Vizing approximation to the minimal edge coloring problem of the processor topology graph.

[Tip]Tip

This routine should be used for cartesian decompositions

[Note]Note

The current implementation relies on external routine written in C++ and its Fortran wrapper.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

The topology to be optimized

info

integer

(INOUT)

return status, 0 on success

topoid

integer, , (IN)

The topology to be optimized

info

integer, , (INOUT)

return status, 0 on success

Used Modules

ppm_module_data, ppm_module_error, ppm_module_alloc, ppm_module_check_id, ppm_module_substop, ppm_module_write, ppm_module_substart

Defined Module Variables

name type dimension description

no variables

Used Modules

has no uses