dbcsr_config Module

Configuration options for DBCSR



Variables

Type Visibility Attributes Name Initial
character(len=*), private, parameter :: moduleN = 'dbcsr_config'
real(kind=dp), public, parameter :: default_resize_factor = 1.2_dp
integer, private, parameter :: max_paramter_name_len = 100
integer, private, parameter :: max_paramter_value_len = 100
integer, public, parameter :: mm_driver_auto = 0
integer, public, parameter :: mm_driver_matmul = 1
integer, public, parameter :: mm_driver_blas = 2
integer, public, parameter :: mm_driver_smm = 3
integer, public, parameter :: mm_driver_xsmm = 4
character(len=*), private, parameter :: mm_name_auto = "AUTO"
character(len=*), private, parameter :: mm_name_blas = "BLAS"
character(len=*), private, parameter :: mm_name_matmul = "MATMUL"
character(len=*), private, parameter :: mm_name_smm = "SMM"
character(len=*), private, parameter :: mm_name_xsmm = "XSMM"
logical, private, parameter :: has_smm = .FALSE.
logical, private, parameter :: has_smm_vec = .FALSE.
logical, private, parameter :: has_xsmm = .FALSE.
logical, public, parameter :: has_acc = .FALSE.
logical, public, parameter :: has_MPI = .FALSE.
integer, private, parameter :: mm_stack_default_size_cpu = 1000
integer, private, parameter :: mm_stack_default_size_gpu = 30000
integer, private, parameter :: mm_stack_default_size = mm_stack_default_size_cpu
logical, private, parameter :: mm_dense_default_cpu = .TRUE.
logical, private, parameter :: mm_dense_default_gpu = .FALSE.
logical, private, parameter :: mm_dense_default = mm_dense_default_cpu
integer, private, parameter :: mm_default_driver = mm_driver_blas
type(dbcsr_config_type), public, SAVE :: dbcsr_cfg = dbcsr_config_type()
integer, public, parameter :: max_kernel_dim = 80
integer, private, parameter :: default_accdrv_active_device_id = -1
integer, private :: accdrv_active_device_id = default_accdrv_active_device_id

Derived Types

type, private, ABSTRACT ::  CONF_PAR

Components

Type Visibility Attributes Name Initial
character(len=1), public :: source = 'D'
character(len=max_paramter_name_len), public :: name = ""

Type-Bound Procedures

procedure, public, non_overridable :: env_value => conf_par_env_value
procedure, public, non_overridable :: print_source

type, private, extends(CONF_PAR) ::  CONF_PAR_INT

Components

Type Visibility Attributes Name Initial
character(len=1), public :: source = 'D'
character(len=max_paramter_name_len), public :: name = ""
integer, public :: val = -1
integer, public :: defval = -1
logical, public :: ensure_positive = .TRUE.

Type-Bound Procedures

procedure, public, non_overridable :: env_value => conf_par_env_value
procedure, public, non_overridable :: print_source
procedure, public :: set => set_conf_par_int

type, private, extends(CONF_PAR) ::  CONF_PAR_MM_DRIVER

Components

Type Visibility Attributes Name Initial
character(len=1), public :: source = 'D'
character(len=max_paramter_name_len), public :: name = ""
integer, public :: val = -1
integer, public :: defval = -1

Type-Bound Procedures

procedure, public, non_overridable :: env_value => conf_par_env_value
procedure, public, non_overridable :: print_source
procedure, public :: set => set_conf_par_mm_driver

type, private, extends(CONF_PAR) ::  CONF_PAR_LOGICAL

Components

Type Visibility Attributes Name Initial
character(len=1), public :: source = 'D'
character(len=max_paramter_name_len), public :: name = ""
logical, public :: val = .FALSE.
logical, public :: defval = .FALSE.

Type-Bound Procedures

procedure, public, non_overridable :: env_value => conf_par_env_value
procedure, public, non_overridable :: print_source
procedure, public :: set => set_conf_par_logical

type, private, extends(CONF_PAR) ::  CONF_PAR_REAL

Components

Type Visibility Attributes Name Initial
character(len=1), public :: source = 'D'
character(len=max_paramter_name_len), public :: name = ""
real(kind=real_8), public :: val = -1
real(kind=real_8), public :: defval = -1

Type-Bound Procedures

procedure, public, non_overridable :: env_value => conf_par_env_value
procedure, public, non_overridable :: print_source
procedure, public :: set => set_conf_par_real

type, private ::  dbcsr_config_type

Components

Type Visibility Attributes Name Initial
type(CONF_PAR_MM_DRIVER), public :: MM_DRIVER = CONF_PAR_MM_DRIVER(name="MM_DRIVER", val=mm_default_driver, defval=mm_default_driver)
type(CONF_PAR_INT), public :: MM_STACK_SIZE = CONF_PAR_INT(name="MM_STACK_SIZE", val=mm_stack_default_size, defval=mm_stack_default_size)
type(CONF_PAR_INT), public :: AVG_ELEMENTS_IMAGES = CONF_PAR_INT(name="AVG_ELEMENTS_IMAGES", val=0, defval=0)
type(CONF_PAR_INT), public :: NUM_MULT_IMAGES = CONF_PAR_INT(name="NUM_MULT_IMAGES", val=1, defval=1)
type(CONF_PAR_INT), public :: N_STACKS = CONF_PAR_INT(name="N_STACKS", val=3, defval=3)
type(CONF_PAR_LOGICAL), public :: USE_MPI_RMA = CONF_PAR_LOGICAL(name="USE_MPI_RMA", val=.FALSE., defval=.FALSE.)
type(CONF_PAR_INT), public :: NUM_LAYERS_3D = CONF_PAR_INT(name="NUM_LAYERS_3D", val=1, defval=1)
type(CONF_PAR_LOGICAL), public :: USE_COMM_THREAD = CONF_PAR_LOGICAL(name="USE_COMM_THREAD", val=.TRUE., defval=.TRUE.)
type(CONF_PAR_INT), public :: COMM_THREAD_LOAD = CONF_PAR_INT(name="COMM_THREAD_LOAD", val=100, defval=100)
type(CONF_PAR_LOGICAL), public :: MM_DENSE = CONF_PAR_LOGICAL(name="MM_DENSE", val=mm_dense_default, defval=mm_dense_default)
type(CONF_PAR_INT), public :: MULTREC_LIMIT = CONF_PAR_INT(name="MULTREC_LIMIT", val=512, defval=512)
type(CONF_PAR_LOGICAL), public :: RUN_ON_GPU = CONF_PAR_LOGICAL(name="RUN_ON_GPU", val=.TRUE., defval=.TRUE.)
type(CONF_PAR_INT), public :: ACCDRV_THREAD_BUFFERS = CONF_PAR_INT(name="ACCDRV_THREAD_BUFFERS", val=8, defval=8)
type(CONF_PAR_LOGICAL), public :: ACCDRV_AVOID_AFTER_BUSY = CONF_PAR_LOGICAL(name="ACCDRV_AVOID_AFTER_BUSY", val=.FALSE., defval=.FALSE.)
type(CONF_PAR_INT), public :: ACCDRV_MIN_FLOP_PROCESS = CONF_PAR_INT(name="ACCDRV_MIN_FLOP_PROCESS", val=0, defval=0)
type(CONF_PAR_LOGICAL), public :: ACCDRV_STACK_SORT = CONF_PAR_LOGICAL(name="ACCDRV_STACK_SORT", val=.TRUE., defval=.TRUE.)
type(CONF_PAR_INT), public :: ACCDRV_MIN_FLOP_SORT = CONF_PAR_INT(name="ACCDRV_MIN_FLOP_SORT", val=4000, defval=4000)
type(CONF_PAR_LOGICAL), public :: ACCDRV_DO_INHOMOGENOUS = CONF_PAR_LOGICAL(name="ACCDRV_DO_INHOMOGENOUS", val=.TRUE., defval=.TRUE.)
type(CONF_PAR_INT), public :: ACCDRV_BINNING_NBINS = CONF_PAR_INT(name="ACCDRV_BINNING_NBINS", val=4096, defval=4096)
type(CONF_PAR_INT), public :: ACCDRV_BINNING_BINSIZE = CONF_PAR_INT(name="ACCDRV_BINNING_BINSIZE", val=16, defval=16)
type(CONF_PAR_LOGICAL), public :: USE_MEMPOOLS_CPU = CONF_PAR_LOGICAL(name="USE_MEMPOOLS_CPU", val=.FALSE., defval=.FALSE.)
type(CONF_PAR_LOGICAL), public :: USE_MPI_ALLOCATOR = CONF_PAR_LOGICAL(name="USE_MPI_ALLOCATOR", val=.FALSE., defval=.FALSE.)
type(CONF_PAR_REAL), public :: TAS_SPLIT_FACTOR = CONF_PAR_REAL(name="TAS_SPLIT_FACTOR", val=1.0_real_8, defval=1.0_real_8)
type(CONF_PAR_LOGICAL), public :: USE_ACC_G2G = CONF_PAR_LOGICAL(name="USE_ACC_G2G", val=.FALSE., defval=.FALSE.)

Functions

private function print_source(this)

Arguments

Type IntentOptional Attributes Name
class(CONF_PAR), intent(in) :: this

Return Value character(len=3)

private function conf_par_env_value(this, env_val) result(status)

Arguments

Type IntentOptional Attributes Name
class(CONF_PAR), intent(inout) :: this
class(*), intent(out) :: env_val

Return Value logical

public function get_accdrv_active_device_id()

Arguments

None

Return Value integer

public pure function use_acc()

Arguments

None

Return Value logical


Subroutines

private subroutine set_conf_par_int(this, integer_val)

Arguments

Type IntentOptional Attributes Name
class(CONF_PAR_INT), intent(inout) :: this
integer, intent(in), optional :: integer_val

private subroutine set_conf_par_mm_driver(this, mm_driver)

Arguments

Type IntentOptional Attributes Name
class(CONF_PAR_MM_DRIVER), intent(inout) :: this
character(len=*), intent(in), optional :: mm_driver

private subroutine set_conf_par_logical(this, logical_val)

Arguments

Type IntentOptional Attributes Name
class(CONF_PAR_LOGICAL), intent(inout) :: this
logical, intent(in), optional :: logical_val

private subroutine set_conf_par_real(this, real_val)

Arguments

Type IntentOptional Attributes Name
class(CONF_PAR_REAL), intent(inout) :: this
real(kind=real_8), intent(in), optional :: real_val

public subroutine dbcsr_set_config(mm_driver, use_mpi_allocator, mm_stack_size, avg_elements_images, num_mult_images, nstacks, use_mpi_rma, num_layers_3D, use_comm_thread, comm_thread_load, mm_dense, multrec_limit, run_on_gpu, accdrv_thread_buffers, accdrv_avoid_after_busy, accdrv_min_flop_process, accdrv_stack_sort, accdrv_min_flop_sort, accdrv_do_inhomogenous, accdrv_binning_nbins, accdrv_binning_binsize, use_mempools_cpu, tas_split_factor, use_acc_g2g)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in), optional :: mm_driver
logical, intent(in), optional :: use_mpi_allocator
integer, intent(in), optional :: mm_stack_size
integer, intent(in), optional :: avg_elements_images

Maximum number of elements for each image

integer, intent(in), optional :: num_mult_images

Multiplicative factor for number of virtual images

integer, intent(in), optional :: nstacks

Number of stacks to use

logical, intent(in), optional :: use_mpi_rma

use_mpi_rma RMA algorithm

integer, intent(in), optional :: num_layers_3D

num_layers_3D 3D layers

logical, intent(in), optional :: use_comm_thread
integer, intent(in), optional :: comm_thread_load
logical, intent(in), optional :: mm_dense
integer, intent(in), optional :: multrec_limit
logical, intent(in), optional :: run_on_gpu
integer, intent(in), optional :: accdrv_thread_buffers
logical, intent(in), optional :: accdrv_avoid_after_busy
integer, intent(in), optional :: accdrv_min_flop_process
logical, intent(in), optional :: accdrv_stack_sort
integer, intent(in), optional :: accdrv_min_flop_sort
logical, intent(in), optional :: accdrv_do_inhomogenous
integer, intent(in), optional :: accdrv_binning_nbins
integer, intent(in), optional :: accdrv_binning_binsize
logical, intent(in), optional :: use_mempools_cpu
real(kind=real_8), intent(in), optional :: tas_split_factor
logical, intent(in), optional :: use_acc_g2g

public subroutine dbcsr_get_default_config(use_mpi_allocator, mm_stack_size, avg_elements_images, num_mult_images, nstacks, use_mpi_rma, num_layers_3D, use_comm_thread, comm_thread_load, mm_dense, run_on_gpu, multrec_limit, accdrv_thread_buffers, accdrv_avoid_after_busy, accdrv_min_flop_process, accdrv_stack_sort, accdrv_min_flop_sort, accdrv_do_inhomogenous, accdrv_binning_nbins, accdrv_binning_binsize, use_mempools_cpu, tas_split_factor, use_acc_g2g)

Arguments

Type IntentOptional Attributes Name
logical, intent(out), optional :: use_mpi_allocator
integer, intent(out), optional :: mm_stack_size
integer, intent(out), optional :: avg_elements_images
integer, intent(out), optional :: num_mult_images
integer, intent(out), optional :: nstacks
logical, intent(out), optional :: use_mpi_rma
integer, intent(out), optional :: num_layers_3D
logical, intent(out), optional :: use_comm_thread
integer, intent(out), optional :: comm_thread_load
logical, intent(out), optional :: mm_dense
logical, intent(out), optional :: run_on_gpu
integer, intent(out), optional :: multrec_limit
integer, intent(out), optional :: accdrv_thread_buffers
logical, intent(out), optional :: accdrv_avoid_after_busy
integer, intent(out), optional :: accdrv_min_flop_process
logical, intent(out), optional :: accdrv_stack_sort
integer, intent(out), optional :: accdrv_min_flop_sort
logical, intent(out), optional :: accdrv_do_inhomogenous
integer, intent(out), optional :: accdrv_binning_nbins
integer, intent(out), optional :: accdrv_binning_binsize
logical, intent(out), optional :: use_mempools_cpu
real(kind=real_8), intent(out), optional :: tas_split_factor
logical, intent(out), optional :: use_acc_g2g

public subroutine dbcsr_print_config(unit_nr)

Prints configuration for DBCSR

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: unit_nr

public subroutine set_accdrv_active_device_id(in_accdrv_active_device_id)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_accdrv_active_device_id

public subroutine reset_accdrv_active_device_id()

Arguments

None