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 |