Performance Metric Outputs Action System

Description

The PerformanceMetricOutputs action is designed to provide a set of performance metrics for BISON fuel rod simulations. The standard names given to these postprocessors will aid in the the generation of comparison figures; these figures will help to track the variation in simulation of the BISON assessments cases both over a period of time and over a set of different input file and source code settings.

The user may elect to use the PerformanceMetricOutputs action to generate performance metric information for the time spent in the residual and Jacobian computations, the number of calls to the residual and Jacobian calculations, or both metrics. All of the possible outputs, generated with the parameter setting problem_compute_metric = Both, are listed in Table 1.

Table 1: Correspondence Among Action Functionality and Generated Outputs for the PerformanceMetricOutputs Action

FunctionalityGenerated Postprocessor NameCreated Classes
Total simulation run timesimulation_alive_timePerfGraphData
Linear iterations per timestepnumber_linear_iterationsNumLinearIterations
Nonlinear iterations per timestepnumber_nonlinear_iterationsNumNonlinearIterations
Time step sizetime_step_sizeTimestepSize
Physical memory usagephysical_memory_useMemoryUsage
Total linear iterationstotal_linear_iterationsCumulativeValuePostprocessor
Total nonlinear iterationstotal_nonlinear_iterationsCumulativeValuePostprocessor
Number of degrees of freedomnumber_dofsNumDOFs
Number of nonlinear variablesnumber_nonlinear_variablesNumVars
Residual compute time per timestepresidual_compute_timePerfGraphData
Jacobian compute time per timestepjacobian_compute_timePerfGraphData
Number of residual callsnumber_calls_residualPerfGraphData
Number of Jacobian callsnumber_calls_jacobianPerfGraphData

The optional input parameter outputs can be used to pass a vector of output block names to restrict output to as well. If this parameter is not set, the PerformanceMetricOutputs action will create a separate CSV file with the suffix performance_metrics.csv.

Example Input File Syntax

The default behavior of the PerformanceMetricOutputs action will create a standard set of outputs to monitor the simulation performance simply by including the action name in the input file:

[PerformanceMetricOutputs<<<{"href": "index.html"}>>>]
[]
(test/tests/performance_outputs_action/reference_residual_use.i)

If desired, a separate output file block can be included in the input file and connected to the PerformanceMetricOutputs action:

[Outputs<<<{"href": "../Outputs/index.html"}>>>]
  [separate_file]
    type = CSV<<<{"description": "Output for postprocessors, vector postprocessors, and scalar variables using comma seperated values (CSV).", "href": "../../source/outputs/CSV.html"}>>>
    time_step_interval<<<{"description": "The interval (number of time steps) at which output occurs. Unless explicitly set, the default value of this parameter is set to infinity if the wall_time_interval is explicitly set."}>>> = 2
    show<<<{"description": "A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names)."}>>> = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
  []
[]
(test/tests/performance_outputs_action/custom_outputfile.i)

where the argument to the outputs parameter matches the name of the Outputs block in the input file

[PerformanceMetricOutputs<<<{"href": "index.html"}>>>]
  outputs<<<{"description": "Vector of output names to which you would like to restrict the output of the postprocessors generated by this action."}>>> = 'separate_file'
[]
(test/tests/performance_outputs_action/custom_outputfile.i)

Input Parameters

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

  • must_existFalseWhether or not the section must exist; if false and the section does not exist, the value is set to zero

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not the section must exist; if false and the section does not exist, the value is set to zero

  • outputsVector of output names to which you would like to restrict the output of the postprocessors generated by this action.

    C++ Type:std::vector<OutputName>

    Controllable:No

    Description:Vector of output names to which you would like to restrict the output of the postprocessors generated by this action.

  • problem_compute_metricTimeThe type of performance metric to collect for the residual and Jacobian calculation components of the simulation; the options are Calls Time Both.

    Default:Time

    C++ Type:MooseEnum

    Options:Calls, Time, Both

    Controllable:No

    Description:The type of performance metric to collect for the residual and Jacobian calculation components of the simulation; the options are Calls Time Both.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

Advanced Parameters

Associated Actions

Available Actions

  • Bison App
  • PerformanceMetricOutputsActionSets up the Postprocessors for a set of performance metrics (such as run time and iteration counts) for any Bison simulation. These metrics are output to a separate CSV file.