Eigenvalue SoLvers for Petaflop-Applications (ELPA) 2022.11.001.rc1
Data Types | Functions/Subroutines | Variables
elpa_impl Module Reference

Fortran module which provides the actual implementation of the API. Do not use directly! Use the module "elpa". More...

Data Types

type  elpa_impl_t
 Definition of the extended elpa_impl_t type. More...
 

Functions/Subroutines

type(elpa_impl_t) function, pointer, public elpa_impl_allocate (error)
 the implementation of the generic methods More...
 
type(c_ptr) function elpa_impl_allocate_c (error)
 
subroutine elpa_impl_deallocate_c (handle, error)
 
subroutine elpa_load_settings (self, file_name, error)
 function to load all the parameters, which have been saved to a file Parameters More...
 
subroutine elpa_load_settings_c (handle, filename_p, error)
 
subroutine elpa_print_settings (self, error)
 function to print all the parameters, that have been set Parameters More...
 
subroutine elpa_print_settings_c (handle, error)
 
subroutine elpa_store_settings (self, file_name, error)
 function to save all the parameters, that have been set Parameters More...
 
subroutine elpa_store_settings_c (handle, filename_p, error)
 
subroutine elpa_autotune_impl_deallocate (autotune_handle, error)
 
integer function elpa_setup (self)
 function to setup an ELPA object and to store the MPI communicators internally Parameters More...
 
integer(kind=c_int) function elpa_setup_c (handle)
 
integer function elpa_construct_scalapack_descriptor (self, sc_desc, rectangular_for_ev)
 
subroutine elpa_set_integer_c (handle, name_p, value, error)
 
subroutine elpa_get_integer_c (handle, name_p, value, error)
 
integer function elpa_is_set (self, name)
 function to check whether a key/value pair is set Parameters More...
 
integer function elpa_can_set (self, name, value)
 function to check whether a key/value pair can be set Parameters More...
 
character(kind=c_char, len=elpa_index_int_value_to_strlen_c(self%index, option_name//c_null_char)) function, pointer elpa_value_to_string (self, option_name, error)
 function to convert a value to an human readable string Parameters More...
 
subroutine elpa_set_float_c (handle, name_p, value, error)
 
subroutine elpa_get_float_c (handle, name_p, value, error)
 
subroutine elpa_set_double_c (handle, name_p, value, error)
 
subroutine elpa_get_double_c (handle, name_p, value, error)
 
integer(kind=c_int) function, pointer elpa_associate_int (self, name)
 function to associate a pointer with an integer value Parameters More...
 
real(kind=c_double) function elpa_get_time (self, name1, name2, name3, name4, name5, name6)
 function to querry the timing information at a certain level Parameters More...
 
subroutine elpa_print_times (self, name1, name2, name3, name4)
 function to print the timing tree below at a certain level Parameters More...
 
subroutine elpa_timer_start (self, name)
 function to start the timing of a code region Parameters More...
 
subroutine elpa_timer_stop (self, name)
 function to stop the timing of a code region Parameters More...
 
subroutine elpa_destroy (self, error)
 function to destroy an elpa object Parameters More...
 
subroutine elpa_autotune_set_api_version (self, api_version, error)
 procedure to set the api version used for ELPA autotuning Parameters More...
 
class(elpa_autotune_t) function, pointer elpa_autotune_setup (self, level, domain, error)
 function to setup the ELPA autotuning and create the autotune object Parameters More...
 
subroutine elpa_autotune_set_api_version_c (handle, api_version, error)
 
type(c_ptr) function elpa_autotune_setup_c (handle, level, domain, error)
 
logical function elpa_autotune_step (self, tune_state, error)
 function to do the work an autotunig step Parameters More...
 
logical function elpa_autotune_step_worker (self, tune_state, solver, error)
 function to do the work of an autotunig step Parameters More...
 
integer(kind=c_int) function elpa_autotune_step_c (handle, autotune_handle, error)
 
subroutine elpa_autotune_set_best (self, tune_state, error)
 function to set the up-to-now best options of the autotuning Parameters More...
 
subroutine elpa_autotune_print_best (self, tune_state, error)
 function to print the up-to-now best options of the autotuning Parameters More...
 
subroutine elpa_autotune_print_state (self, tune_state, error)
 function to print the state of the autotuning Parameters More...
 
subroutine elpa_autotune_print_state_c (handle, autotune_handle, error)
 
subroutine elpa_autotune_save_state (self, tune_state, file_name, error)
 function to save the state of the autotuning Parameters More...
 
subroutine elpa_autotune_save_state_c (handle, autotune_handle, filename_p, error)
 
subroutine elpa_autotune_load_state (self, tune_state, file_name, error)
 function to load the state of the autotuning Parameters More...
 
subroutine elpa_autotune_load_state_c (handle, autotune_handle, filename_p, error)
 
subroutine elpa_autotune_set_best_c (handle, autotune_handle, error)
 
subroutine elpa_autotune_print_best_c (handle, autotune_handle, error)
 
logical function check_elpa (error, str, new_error)
 
logical function check_elpa_get (error, new_error)
 
logical function check_elpa_set (error, new_error)
 
subroutine elpa_creating_from_legacy_api (self)
 

Variables

integer(kind=c_int), private autotune_level
 
integer(kind=c_int), private autotune_domain
 
logical, dimension(0:elpa_number_of_autotune_levels-1), save, private autotune_substeps_done1stage = .false.
 
logical, dimension(0:elpa_number_of_autotune_levels-1), save, private autotune_substeps_done2stage = .false.
 
logical, save, private do_autotune_2stage = .false.
 
logical, save, private do_autotune_1stage = .false.
 
logical, save, private last_call_2stage = .false.
 
logical, save, private last_call_1stage = .false.
 
logical, save, private autotune_api_set = .false.
 
logical, save, private new_autotune = .false.
 
integer(kind=c_int), private consider_solver
 

Detailed Description

Fortran module which provides the actual implementation of the API. Do not use directly! Use the module "elpa".

Function/Subroutine Documentation

◆ check_elpa()

logical function elpa_impl::check_elpa ( integer, intent(inout)  error,
character(*)  str,
integer, intent(in)  new_error 
)
private

◆ check_elpa_get()

logical function elpa_impl::check_elpa_get ( integer, intent(inout)  error,
integer, intent(in)  new_error 
)
private

◆ check_elpa_set()

logical function elpa_impl::check_elpa_set ( integer, intent(inout)  error,
integer, intent(in)  new_error 
)
private

◆ elpa_associate_int()

integer(kind=c_int) function, pointer elpa_impl::elpa_associate_int ( class(elpa_impl_t self,
character(*), intent(in)  name 
)
private

function to associate a pointer with an integer value Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
namestring: the name of the entry
Returns
value integer, pointer: the value for the entry

◆ elpa_autotune_impl_deallocate()

subroutine elpa_impl::elpa_autotune_impl_deallocate ( type(c_ptr), value  autotune_handle,
integer(kind=c_int)  error 
)
private

◆ elpa_autotune_load_state()

subroutine elpa_impl::elpa_autotune_load_state ( class(elpa_impl_t), intent(inout)  self,
class(elpa_autotune_t), intent(in), target  tune_state,
character(*), intent(in)  file_name,
integer(kind=c_int), intent(out), optional  error 
)
private

function to load the state of the autotuning Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
tune_stateclass(elpa_autotune_t): the autotuning object
file_namestring, the name of the file from which to load the state
errorinteger, optional

◆ elpa_autotune_load_state_c()

subroutine elpa_impl::elpa_autotune_load_state_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  autotune_handle,
type(c_ptr), intent(in), value  filename_p,
integer(kind=c_int)  error 
)
private

◆ elpa_autotune_print_best()

subroutine elpa_impl::elpa_autotune_print_best ( class(elpa_impl_t), intent(inout)  self,
class(elpa_autotune_t), intent(in), target  tune_state,
integer(kind=c_int), intent(out), optional  error 
)

function to print the up-to-now best options of the autotuning Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
tune_stateclass(elpa_autotune_t): the autotuning object
errorinteger, optional

◆ elpa_autotune_print_best_c()

subroutine elpa_impl::elpa_autotune_print_best_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  autotune_handle,
integer(kind=c_int)  error 
)
private

◆ elpa_autotune_print_state()

subroutine elpa_impl::elpa_autotune_print_state ( class(elpa_impl_t), intent(inout)  self,
class(elpa_autotune_t), intent(in), target  tune_state,
integer(kind=c_int), intent(out), optional  error 
)
private

function to print the state of the autotuning Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
tune_stateclass(elpa_autotune_t): the autotuning object
errorinteger, optional

◆ elpa_autotune_print_state_c()

subroutine elpa_impl::elpa_autotune_print_state_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  autotune_handle,
integer(kind=c_int)  error 
)
private

◆ elpa_autotune_save_state()

subroutine elpa_impl::elpa_autotune_save_state ( class(elpa_impl_t), intent(inout)  self,
class(elpa_autotune_t), intent(in), target  tune_state,
character(*), intent(in)  file_name,
integer(kind=c_int), intent(out), optional  error 
)
private

function to save the state of the autotuning Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
tune_stateclass(elpa_autotune_t): the autotuning object
file_namestring, the name of the file where to save the state
errorinteger, optional

◆ elpa_autotune_save_state_c()

subroutine elpa_impl::elpa_autotune_save_state_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  autotune_handle,
type(c_ptr), intent(in), value  filename_p,
integer(kind=c_int)  error 
)
private

◆ elpa_autotune_set_api_version()

subroutine elpa_impl::elpa_autotune_set_api_version ( class(elpa_impl_t), intent(inout), target  self,
integer, intent(in)  api_version,
integer(kind=c_int), optional  error 
)
private

procedure to set the api version used for ELPA autotuning Parameters

Parameters
selfthe allocated ELPA object
api_versioninteger: the api_version
errorinteger: error code

◆ elpa_autotune_set_api_version_c()

subroutine elpa_impl::elpa_autotune_set_api_version_c ( type(c_ptr), intent(in), value  handle,
integer(kind=c_int), intent(in), value  api_version,
integer(kind=c_int), intent(in)  error 
)
private

◆ elpa_autotune_set_best()

subroutine elpa_impl::elpa_autotune_set_best ( class(elpa_impl_t), intent(inout)  self,
class(elpa_autotune_t), intent(in), target  tune_state,
integer(kind=ik), intent(out), optional  error 
)
private

function to set the up-to-now best options of the autotuning Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
tune_stateclass(elpa_autotune_t): the autotuning object
errorcode optional, integer

◆ elpa_autotune_set_best_c()

subroutine elpa_impl::elpa_autotune_set_best_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  autotune_handle,
integer(kind=c_int)  error 
)
private

◆ elpa_autotune_setup()

class(elpa_autotune_t) function, pointer elpa_impl::elpa_autotune_setup ( class(elpa_impl_t), intent(inout), target  self,
integer, intent(in)  level,
integer, intent(in)  domain,
integer(kind=c_int), optional  error 
)
private

function to setup the ELPA autotuning and create the autotune object Parameters

Parameters
selfthe allocated ELPA object
levelinteger: the "thoroughness" of the planed autotuning
domaininteger: the domain (real/complex) which should be tuned
Returns
tune_state the created autotuning object

◆ elpa_autotune_setup_c()

type(c_ptr) function elpa_impl::elpa_autotune_setup_c ( type(c_ptr), intent(in), value  handle,
integer(kind=c_int), intent(in), value  level,
integer(kind=c_int), intent(in), value  domain,
integer(kind=c_int), intent(inout)  error 
)
private

◆ elpa_autotune_step()

logical function elpa_impl::elpa_autotune_step ( class(elpa_impl_t), intent(inout)  self,
class(elpa_autotune_t), intent(inout), target  tune_state,
integer(kind=c_int), intent(out), optional  error 
)
private

function to do the work an autotunig step Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
tune_stateclass(elpa_autotune_t): the autotuning object
Returns
unfinished logical: describes the state of the autotuning (completed/uncompleted)

◆ elpa_autotune_step_c()

integer(kind=c_int) function elpa_impl::elpa_autotune_step_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  autotune_handle,
integer(kind=c_int)  error 
)
private

◆ elpa_autotune_step_worker()

logical function elpa_impl::elpa_autotune_step_worker ( class(elpa_impl_t), intent(inout)  self,
class(elpa_autotune_t), intent(inout), target  tune_state,
integer(kind=c_int), intent(in)  solver,
integer(kind=c_int), intent(out), optional  error 
)
private

function to do the work of an autotunig step Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
tune_stateclass(elpa_autotune_t): the autotuning object
Returns
unfinished logical: describes the state of the autotuning (completed/uncompleted)

◆ elpa_can_set()

integer function elpa_impl::elpa_can_set ( class(elpa_impl_t self,
character(*), intent(in)  name,
integer(kind=c_int), intent(in)  value 
)
private

function to check whether a key/value pair can be set Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
namestring, the key
valueinteger, value
Returns
error integer, error code

◆ elpa_construct_scalapack_descriptor()

integer function elpa_impl::elpa_construct_scalapack_descriptor ( class(elpa_impl_t), intent(inout)  self,
integer, dimension(sc_desc_len), intent(out)  sc_desc,
logical, intent(in)  rectangular_for_ev 
)
private

◆ elpa_creating_from_legacy_api()

subroutine elpa_impl::elpa_creating_from_legacy_api ( class(elpa_impl_t), intent(inout)  self)
private

◆ elpa_destroy()

subroutine elpa_impl::elpa_destroy ( class(elpa_impl_t self,
integer, intent(out), optional  error 
)
private

function to destroy an elpa object Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
errorinteger, optional error code

◆ elpa_get_double_c()

subroutine elpa_impl::elpa_get_double_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  name_p,
real(kind=c_double)  value,
integer(kind=c_int), intent(inout)  error 
)
private

◆ elpa_get_float_c()

subroutine elpa_impl::elpa_get_float_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  name_p,
real(kind=c_float)  value,
integer(kind=c_int), intent(inout)  error 
)
private

◆ elpa_get_integer_c()

subroutine elpa_impl::elpa_get_integer_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  name_p,
integer(kind=c_int)  value,
integer(kind=c_int), intent(inout)  error 
)
private

◆ elpa_get_time()

real(kind=c_double) function elpa_impl::elpa_get_time ( class(elpa_impl_t), intent(in)  self,
character(len=*), intent(in), optional  name1,
character(len=*), intent(in), optional  name2,
character(len=*), intent(in), optional  name3,
character(len=*), intent(in), optional  name4,
character(len=*), intent(in), optional  name5,
character(len=*), intent(in), optional  name6 
)
private

function to querry the timing information at a certain level Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
name1.. name6 string: the string identifier for the timer region. at the moment 6 nested levels can be queried
Returns
s double: the timer metric for the region. Might be seconds, or any other supported metric

◆ elpa_impl_allocate()

type(elpa_impl_t) function, pointer, public elpa_impl::elpa_impl_allocate ( integer, intent(out), optional  error)

the implementation of the generic methods

function to allocate an ELPA object Parameters

Parameters
errorinteger, optional to get an error code
Returns
obj class(elpa_impl_t) allocated ELPA object

◆ elpa_impl_allocate_c()

type(c_ptr) function elpa_impl::elpa_impl_allocate_c ( integer(kind=c_int)  error)
private

◆ elpa_impl_deallocate_c()

subroutine elpa_impl::elpa_impl_deallocate_c ( type(c_ptr), value  handle,
integer(kind=c_int)  error 
)
private

◆ elpa_is_set()

integer function elpa_impl::elpa_is_set ( class(elpa_impl_t self,
character(*), intent(in)  name 
)
private

function to check whether a key/value pair is set Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
namestring, the key
Returns
state integer, the state of the key/value pair

◆ elpa_load_settings()

subroutine elpa_impl::elpa_load_settings ( class(elpa_impl_t), intent(inout)  self,
character(*), intent(in)  file_name,
integer(kind=c_int), intent(out), optional  error 
)
private

function to load all the parameters, which have been saved to a file Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
file_namestring, the name of the file from which to load the parameters
errorinteger, optional

◆ elpa_load_settings_c()

subroutine elpa_impl::elpa_load_settings_c ( type(c_ptr), value  handle,
type(c_ptr), intent(in), value  filename_p,
integer(kind=c_int)  error 
)
private

◆ elpa_print_settings()

subroutine elpa_impl::elpa_print_settings ( class(elpa_impl_t), intent(inout)  self,
integer(kind=c_int), intent(out), optional  error 
)
private

function to print all the parameters, that have been set Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
erroroptional, integer

◆ elpa_print_settings_c()

subroutine elpa_impl::elpa_print_settings_c ( type(c_ptr), value  handle,
integer(kind=c_int)  error 
)
private

◆ elpa_print_times()

subroutine elpa_impl::elpa_print_times ( class(elpa_impl_t), intent(in)  self,
character(len=*), intent(in), optional  name1,
character(len=*), intent(in), optional  name2,
character(len=*), intent(in), optional  name3,
character(len=*), intent(in), optional  name4 
)
private

function to print the timing tree below at a certain level Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
name1.. name6 string: the string identifier for the timer region. at the moment 4 nested levels can be specified

◆ elpa_set_double_c()

subroutine elpa_impl::elpa_set_double_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  name_p,
real(kind=c_double), intent(in), value  value,
integer(kind=c_int), intent(in)  error 
)
private

◆ elpa_set_float_c()

subroutine elpa_impl::elpa_set_float_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  name_p,
real(kind=c_float), intent(in), value  value,
integer(kind=c_int), intent(in)  error 
)
private

◆ elpa_set_integer_c()

subroutine elpa_impl::elpa_set_integer_c ( type(c_ptr), intent(in), value  handle,
type(c_ptr), intent(in), value  name_p,
integer(kind=c_int), intent(in), value  value,
integer(kind=c_int), intent(in)  error 
)
private

◆ elpa_setup()

integer function elpa_impl::elpa_setup ( class(elpa_impl_t), intent(inout)  self)
private

function to setup an ELPA object and to store the MPI communicators internally Parameters

Parameters
selfclass(elpa_impl_t), the allocated ELPA object
Returns
error integer, the error code

◆ elpa_setup_c()

integer(kind=c_int) function elpa_impl::elpa_setup_c ( type(c_ptr), intent(in), value  handle)

◆ elpa_store_settings()

subroutine elpa_impl::elpa_store_settings ( class(elpa_impl_t), intent(inout)  self,
character(*), intent(in)  file_name,
integer(kind=c_int), intent(out), optional  error 
)
private

function to save all the parameters, that have been set Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
file_namestring, the name of the file where to save the parameters
errorinteger, optional

◆ elpa_store_settings_c()

subroutine elpa_impl::elpa_store_settings_c ( type(c_ptr), value  handle,
type(c_ptr), intent(in), value  filename_p,
integer(kind=c_int)  error 
)
private

◆ elpa_timer_start()

subroutine elpa_impl::elpa_timer_start ( class(elpa_impl_t), intent(inout)  self,
character(len=*), intent(in)  name 
)
private

function to start the timing of a code region Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
namestring: a chosen identifier name for the code region

◆ elpa_timer_stop()

subroutine elpa_impl::elpa_timer_stop ( class(elpa_impl_t), intent(inout)  self,
character(len=*), intent(in)  name 
)
private

function to stop the timing of a code region Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
namestring: identifier name for the code region to stop

◆ elpa_value_to_string()

character(kind=c_char, len=elpa_index_int_value_to_strlen_c(self%index, option_name // c_null_char)) function, pointer elpa_impl::elpa_value_to_string ( class(elpa_impl_t), intent(in)  self,
character(kind=c_char, len=*), intent(in)  option_name,
integer, intent(out), optional  error 
)
private

function to convert a value to an human readable string Parameters

Parameters
selfclass(elpa_impl_t) the allocated ELPA object
option_namestring: the name of the options, whose value should be converted
errorinteger: errpr code
Returns
string string: the humanreadable string

Variable Documentation

◆ autotune_api_set

logical, save, private elpa_impl::autotune_api_set = .false.
private

◆ autotune_domain

integer(kind=c_int), private elpa_impl::autotune_domain
private

◆ autotune_level

integer(kind=c_int), private elpa_impl::autotune_level
private

◆ autotune_substeps_done1stage

logical, dimension(0:elpa_number_of_autotune_levels-1), save, private elpa_impl::autotune_substeps_done1stage = .false.
private

◆ autotune_substeps_done2stage

logical, dimension(0:elpa_number_of_autotune_levels-1), save, private elpa_impl::autotune_substeps_done2stage = .false.
private

◆ consider_solver

integer(kind=c_int), private elpa_impl::consider_solver
private

◆ do_autotune_1stage

logical, save, private elpa_impl::do_autotune_1stage = .false.
private

◆ do_autotune_2stage

logical, save, private elpa_impl::do_autotune_2stage = .false.
private

◆ last_call_1stage

logical, save, private elpa_impl::last_call_1stage = .false.
private

◆ last_call_2stage

logical, save, private elpa_impl::last_call_2stage = .false.
private

◆ new_autotune

logical, save, private elpa_impl::new_autotune = .false.
private