A module for handling the configuration of the optimisation module via the namelist optimisation_config.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | private | :: | initialized | = | .false. | ||
type(optimisation_config_type), | private | :: | optimisation_config |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real, | public | :: | time | ||||
real, | public | :: | optimal_time | ||||
real, | public | :: | cost | ||||
real, | public | :: | optimal_cost | ||||
real, | public | :: | efficiency | ||||
integer, | public | :: | nproc | ||||
logical, | public | :: | optimal | = | .true. |
A type for storing the optimisation configuration, the results
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | nproc_max | ||||
type(optimisation_results_type), | public | :: | results | ||||
type(optimisations_overrides_type), | public, | dimension(:), allocatable | :: | sorted_optimisations | |||
type(optimisation_results_type), | public, | dimension(:), allocatable | :: | sorted_results | |||
real, | public | :: | timing_rel_error | ||||
real, | public | :: | timing_max_rel_error | ||||
integer, | public | :: | outunit | ||||
logical, | public | :: | on | ||||
logical, | public | :: | auto | ||||
logical, | public | :: | measure_all | ||||
logical, | public | :: | warm_up | ||||
logical, | public | :: | estimate_timing_error | ||||
integer, | public | :: | nstep_measure | ||||
real, | public | :: | max_imbalance | ||||
integer, | public | :: | max_unused_procs | ||||
real, | public | :: | min_efficiency |
Used to represent the input configuration for GS2's optimisation
procedure. When turned on, GS2 performs a scan for the given input file,
varying different optimisation flags. Results of this scan are reported
in
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | exist | = | .false. |
Does the related namelist exist in the target input file? |
|
integer, | public | :: | index | = | 0 |
Used to hold the specific index of numbered namelists |
|
logical, | public | :: | skip_read | = | .false. |
Do we want to skip the read step in init? |
|
logical, | public | :: | skip_broadcast | = | .false. |
Do we want to skip the broadcast step in init? |
|
logical, | public | :: | skip_smart_defaults | = | .false. |
Do we want to skip the smaart defaults in init? |
|
logical, | public | :: | auto | = | .true. |
When true, automatically continues GS2 to run the input file with the optimised parameters. |
|
logical, | public | :: | estimate_timing_error | = | .true. |
Estimate the absolute and relative errors in timing data FIXME: Why would we want this to be false? On small core counts it doesn't seem like a big overhead. |
|
real, | public | :: | max_imbalance | = | -1.0 |
The maximum fraction of unused procs to allow in the optimisation scan. |
|
integer, | public | :: | max_unused_procs | = | 0 |
The maximum number of unused procs to allow in the optimisation scan. |
|
logical, | public | :: | measure_all | = | .false. |
When true, use the "advance" timer. When false, use the "timestep" timer. |
|
real, | public | :: | min_efficiency | = | -1.0 |
The minimum efficiency (relative to the optimal parameters) considered when looking for a constrained set of parameters. A negative value implies only the optimal parameters are considered. |
|
integer, | public | :: | nstep_measure | = | 5 |
The number of timestep to use in the timing experiments. Must be greater than 1 |
|
logical, | public | :: | on | = | .false. |
Set true to turn on optimisation procedure |
|
logical, | public | :: | warm_up | = | .false. |
When true, perform a few runs before beginning the timing experiment |
Gets the default name for this namelist
Gets the default requires index for this namelist
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(optimisation_type), | intent(inout) | :: | optim | |||
type(optimisation_config_type), | intent(in), | optional | :: | optimisation_config_in |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(optimisation_type), | intent(inout) | :: | optim |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(optimisation_type), | intent(inout) | :: | optim | |||
type(optimisation_config_type), | intent(in), | optional | :: | optimisation_config_in |
Reads in the optimisation_config namelist and populates the member variables
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(optimisation_config_type), | intent(inout) | :: | self |
Writes out a namelist representing the current state of the config object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(optimisation_config_type), | intent(in) | :: | self | |||
integer, | intent(in), | optional | :: | unit |
Resets the config object to the initial empty state
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(optimisation_config_type), | intent(inout) | :: | self |
Broadcasts all config parameters so object is populated identically on all processors
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(optimisation_config_type), | intent(inout) | :: | self |
Set the module level config instance
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(optimisation_config_type), | intent(in), | optional | :: | optimisation_config_in |