5.8 Method descr

call p%descr(info, [iout, root, verbosity])

This method prints a description of the preconditioner p to the standard output or to a file. It must be called after hierachy_build and smoothers_build, or build, have been called.

Arguments

info

info

>>>>>> development class="cmtt-12">integer, intent(out).

>>>>>> development class="cmr-12">Error code. If no error, 0 is returned. See Section 7 for details.

amold

class(psb_x_base_sparse_mat),

iout

integer,>>>>>> development class="cmtt-12"> intent(in), optional.

The desired dynamic type for internal matrix components; this ======= style="vertical-align:baseline;" id="TBL-16-4-">

The id of the file where the preconditioner description will be >>>>>>> development printed; the default is the standard output.

5.9.2 Method: clone

call p%clone(pout,info)

Create a (deep) copy of the preconditioner object.

Arguments

pout

type(amg_xprec_type), intent(out).

The copy of the preconditioner data structure. Note that x must be chosen according to the real/complex, single/double precision version of AMG4PSBLAS under use.

info

root

>>>>>> development class="cmtt-12">integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

5.9.3 Method: sizeof

sz = p%sizeof([global])

global

logical,in),>>>>>> development class="cmtt-12"> optional.

Whether the global or local preconditioner memory occupation is ======= style="vertical-align:baseline;" id="TBL-16-6-">

The id of the process where the preconditioner description >>>>>>> development will be printed; the default is psb_root_.

Return memory footprint in bytes.

5.9.4 Method: allocate_wrk

call p%allocate_wrk(info[, vmold])

Allocate internal work vectors. Each application of the preconditioner uses a number of work vectors which are allocated internally as necessary; therefore allocation and deallocation of memory occurs multiple times during the execution of a Krylov method. In most cases this strategy is perfectly acceptable, but on some platforms, most notably GPUs, memory allocation is a slow operation, and the default behaviour would lead to a slowdown. This method allows to trade space for time by preallocating the internal workspace outside of the invocation of a Krylov method. When using GPUs or other specialized devices, the vmold argument is also necessary to ensure the internal work vectors are of the appropriate dynamic type to exploit the accelerator hardware; when allocation occurs internally this is taken care of based on the dynamic type of the x argument to the apply method.

Arguments

info

verbosity

>>>>>> development class="cmtt-12">integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

vmold

class(psb_x_base_vect_type), intent(>>>>>> development class="cmtt-12">in), optional.

The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

5.9.5 Method: free_wrk

call p%free_wrk(info)

Deallocate internal work vectors.

Arguments

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

======= style="vertical-align:baseline;" id="TBL-16-8-">

The verbosity level of the description. Default value is 0. For values higher than 0, it prints out further information, e.g., for a distributed multilevel preconditioner the size of the coarse matrices on every process. >>>>>>> development