Documentation for module dbcsr_mm_accdrv

Fourth layer of the dbcsr matrix-matrix multiplication. It hides the differences between performing calculations on the accelerator device or on the CPU.

source: dbcsr_mm_accdrv.F
Loading...

public Types:

dbcsr_mm_accdrv_type
...

public Subroutines/Functions:

After beeing called by ALL threads, it installs a special barrier that forces the priority-streams to wait for the normal-streams.
Finalizes a multiplication cycle for a set of C-blocks.
Finalizes a multiplication cycle for a set of C-blocks.
Initializes a multiplication cycle for new set of C-blocks.
Finalize the library
Initialize the library
Signal approaching end of multiplication
Processes a given stack using accelerator

public Types:

TYPE :: dbcsr_mm_accdrv_type

...


POINTER :: product_wm => NULL() ...
:: c_buffer ...
LOGICAL
:: phase_out = .FALSE. ...
INTEGER
:: nbuffers_phaseout ...
LOGICAL
:: c_area_copy = .TRUE. ...

SUBROUTINEdbcsr_mm_accdrv_barrier()

After beeing called by ALL threads, it installs a special barrier that forces the priority-streams to wait for the normal-streams.

SUBROUTINEdbcsr_mm_accdrv_dev2host_init(this)

Finalizes a multiplication cycle for a set of C-blocks.

Arguments:
INTENT(inout)
:: this ...

SUBROUTINEdbcsr_mm_accdrv_finalize(this)

Finalizes a multiplication cycle for a set of C-blocks.

Arguments:
INTENT(inout)
:: this ...

SUBROUTINEdbcsr_mm_accdrv_init(this, product_wm, nlayers)

Initializes a multiplication cycle for new set of C-blocks.

Arguments:
INTENT(inout)
:: this ...
POINTER
:: product_wm ...
INTEGER,
OPTIONAL
:: nlayers ...

SUBROUTINEdbcsr_mm_accdrv_lib_finalize()

Finalize the library

SUBROUTINEdbcsr_mm_accdrv_lib_init()

Initialize the library

SUBROUTINEdbcsr_mm_accdrv_phaseout(this)

Signal approaching end of multiplication

Arguments:
INTENT(inout)
:: this ...

SUBROUTINEdbcsr_mm_accdrv_process(this, left, right, params, stack_size, stack_descr, success)

Processes a given stack using accelerator

Arguments:
INTENT(inout)
:: this ...
TYPE(dbcsr_type),
INTENT(in)
:: left ...
TYPE(dbcsr_type),
INTENT(in)
:: right ...
INTEGER,
INTENT(inout)
:: params(dbcsr_ps_width,stack_size) ...
INTEGER,
INTENT(in)
:: stack_size ...
INTENT(in)
:: stack_descr ...
LOGICAL,
INTENT(out)
:: success ...