Fourth layer of the dbcsr matrix-matrix multiplication. It hides the differences between performing calculations on the accelerator device or on the CPU. Modification history: - 2010-02-23 Moved from dbcsr_operations - 2011-11 Moved parameter-stack processing routines to dbcsr_mm_methods. - 2013-01 extensive refactoring (Ole Schuett)
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=*), | private, | parameter | :: | moduleN | = | 'dbcsr_mm_sched' | |
| type(stats_type), | private, | DIMENSION(:), ALLOCATABLE, TARGET, SAVE | :: | stats_per_thread |
Counters for each thread to collect statistics |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(dbcsr_work_type), | private, | POINTER | :: | product_wm | => | Null() | |
| type(dbcsr_mm_accdrv_type), | private | :: | accdrv | = | dbcsr_mm_accdrv_type() | ||
| type(dbcsr_mm_hostdrv_type), | private | :: | hostdrv | = | dbcsr_mm_hostdrv_type() | ||
| logical, | private | :: | avoid_accdrv | = | .FALSE. | ||
| logical, | private | :: | product_wm_cleared | = | .FALSE. | ||
| logical, | private | :: | keep_product_data | = | .TRUE. | ||
| integer, | private | :: | product_wm_orig_datasize | = | -1 |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=int_8), | public | :: | cpu_num_stacks | = | 0 | ||
| integer(kind=int_8), | public | :: | smm_num_stacks | = | 0 | ||
| integer(kind=int_8), | public | :: | acc_num_stacks | = | 0 | ||
| integer(kind=int_8), | public | :: | cpu_flop | = | 0 | ||
| integer(kind=int_8), | public | :: | smm_flop | = | 0 | ||
| integer(kind=int_8), | public | :: | acc_flop | = | 0 | ||
| integer(kind=int_8), | public | :: | max_cpu_flop | = | 0 | ||
| integer(kind=int_8), | public | :: | max_smm_flop | = | 0 | ||
| integer(kind=int_8), | public | :: | max_acc_flop | = | 0 | ||
| integer(kind=int_8), | public, | DIMENSION(:, :), ALLOCATABLE | :: | num_mnk_stacks | |||
| integer(kind=int_4), | public, | DIMENSION(64) | :: | padding | = | -1_int_4 |
Initialize a stats_type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(stats_type), | intent(inout) | :: | stats |
Initialize the library
Finalize the library and prints DBCSR statistics
Prints DBCSR statistics
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mp_comm_type), | intent(in) | :: | group | |||
| integer, | intent(in) | :: | output_unit |
Makes sure that the product_wm is cleared.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dbcsr_mm_sched_type), | intent(inout) | :: | this |
Initializes a multiplication cycle for new set of C-blocks.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dbcsr_mm_sched_type), | intent(inout) | :: | this | |||
| type(dbcsr_work_type), | POINTER | :: | product_wm | |||
| integer, | optional | :: | nlayers | |||
| logical, | intent(in) | :: | keep_product_data |
Finalizes a multiplication cycle for a set of C-blocks.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dbcsr_mm_sched_type), | intent(inout) | :: | this |
Finalizes a multiplication cycle for a set of C-blocks.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dbcsr_mm_sched_type), | intent(inout) | :: | this |
Signal begin of a burst of calls to dbcsr_mm_sched_process.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dbcsr_mm_sched_type), | intent(inout) | :: | this |
Signal end of a burst of calls to dbcsr_mm_sched_process.
Signal that previous stacks should be processed first
Processes a given stack. From here on there is no boundary checking due to assumed-SIZE-arguments. This is useful to check stack parameters, BUT it works only for kind=dp
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dbcsr_mm_sched_type), | intent(inout) | :: | this | |||
| type(dbcsr_type), | intent(in) | :: | left | |||
| type(dbcsr_type), | intent(in) | :: | right | |||
| integer, | DIMENSION(:, :), POINTER | :: | stack_data | |||
| integer, | POINTER | :: | stack_fillcount | |||
| type(stack_descriptor_type), | intent(in) | :: | stack_descr |
Change the datasize of the original workspace buffer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dbcsr_mm_sched_type), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | newsize |
Helper-routine used by dbcsr_mm_sched_process to supply statistics.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(stats_type), | intent(inout) | :: | stats | |||
| integer, | intent(in) | :: | m | |||
| integer, | intent(in) | :: | n | |||
| integer, | intent(in) | :: | k | |||
| integer(kind=int_8), | optional | :: | stacksize_cpu | |||
| integer(kind=int_8), | optional | :: | stacksize_smm | |||
| integer(kind=int_8), | optional | :: | stacksize_acc | |||
| integer(kind=int_8), | optional | :: | nstacks_cpu | |||
| integer(kind=int_8), | optional | :: | nstacks_smm | |||
| integer(kind=int_8), | optional | :: | nstacks_acc | |||
| logical, | optional | :: | generated_acc_untuned |
Collects statistics from all OpenMP-threads into report
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(stats_type), | intent(inout) | :: | report |
Collects statistics from all MPI-ranks
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(stats_type), | intent(inout) | :: | report | |||
| type(mp_comm_type), | intent(in) | :: | group |
Prints collected statistics
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(stats_type), | intent(inout) | :: | report | |||
| integer, | intent(in) | :: | output_unit |