Evaluation Toolkit

To open the Evaluation Toolkit

Use the Evaluation Toolkit to analyze and understand how to best use Parallel evaluation modes to speed up your animation. This window contains features that let you manipulate all aspects of the Evaluation Manager, including enabling debugging modes and output.

Note: The information here is provided as a guide. If you want technical background on these processes, see Using Parallel Maya.

Configuration

Contains settings to let you configure the behavior of the tools provided by the Evaluation Toolkit.

Graphviz Options
Use Graphviz system installation
Activate this option to use your system's Graphviz installation instead of the one provided with Maya.
Note: In order for Maya to locate find the Graphviz installation, ensure that the Graphviz folder that contains Graphviz executables is in the PATH environment variable. See Standard paths.
Show Graphiviz Version

Displays the output of the dot -v command, which reports the dot command software version.

Modes

Choose the appropriate evaluation mode from the Evaluation Mode menu

Evaluation Mode menu
DG
Uses dependency graph-based evaluation mode for your scene. (See also Dependency graph.) This was the default evaluation mode before Maya 2016.
Serial
Uses the Evaluation Manager but limits evaluation to a single core (serial evaluation). Use Serial to troubleshoot your scene as it prioritizes scene fidelity over performance so you can locate evaluation errors.
Note: Sometimes scenes run more slowly in Serial evaluation mode than in DG mode. This is because Serial evaluates more nodes than DG mode. Because of this detailed evaluation, if the scene looks incorrect in Serial mode, it is unlikely to work properly in Parallel mode.

Sometimes improper evaluation in Serial mode is caused by custom plug-ins.

Serial (uncached)
Like Serial (above) but uncached redetermines the evaluation order at every frame. Not recommended.
Parallel
Parallelizes evaluation and uses all available cores to evaluate your scene. If this mode causes problems with your scene, disable it and return to the previous standard: DG evaluation mode.

See Profile a scene to improve performance.

This mode is active by default.
GPU Override
Works with the Evaluation Manager to accelerate deformations in either Serial or Parallel Evaluation mode. If your scene has standard Maya deformers and the mesh geometry is dense, this can improve performance. Results vary based on the deformers and density of meshes in your scenes.
Note: GPU override works only with Viewport 2.0 and does not work with Quadro 4000 graphics cards on OSX.
You can find a technical explanation of GPU Override at Using Parallel Maya.
Include Controllers in Evaluation Graph
Activates/disables pre-population with the controller mechanism in the Evaluation Manager when building.
Manipulation
Toggles the Evaluation Manager for Manipulation. Valid only in Serial and Parallel modes.

Heads Up Display

You can display Evaluation and Frame Rate information in a view panel using the following Heads Up Display (HUD) options. For more Heads Up Display options, see Heads Up Display (HUD) Options and Display scene information (HUD) in a view panel.

Evaluation
Indicates the current evaluation mode. See Evaluation in Preferences > Animation to change evaluation nodes.
  • If you are in DG mode, "Evaluation: DG" displays. The EM State shows "Off", and the GPU Override shows "N/A."
  • If you are in Serial or Parallel mode, "Evaluation: Serial" or "Evaluation: Parallel" displays, along with the EM State. EM State indicates whether the Evaluation Manager has an up-to-date evaluation graph, or if it needs to re-build the graph the next time evaluation is triggered by a playback. For example, when something in the DG changes, such as the deletion of a node connection, the Evaluation Manager is no longer in sync with the DG, so the Heads Up Display shows "Rebuild required".

    When an evaluation is triggered, the Evaluation Manager rebuilds the EM graph and the HUD shows "Ready".

  • If the GPU Override option is active, which only occurs when you use Serial or Parallel mode, "GPU Override" displays, which counts the number of mesh vertices (in thousands) being evaluated by the GPU, instead of the CPU. For example, if the HUD shows GPU Override: Enabled (94k), this indicates that 94,000 vertices are being evaluated by the GPU.
Frame Rate

Displays the frame rate in frames per second (FPS) for the current view in the bottom-right corner. The default is off.

Debugging

Use these options in this section to identify the problem areas of your scene.

Validation
Toggles the trace object that tracks invalid evaluation graph paths. It logs data accesses that do not respect dependencies represented by the evaluation graph. These unexpected accesses could lead to evaluation errors and instabilities, such as crashes.
The output file contains missing dependencies detected during each playback frame. This only works in Serial mode.
Trace results are saved in Maya’s Temp directory, in the _MayaEvaluationGraphValidation.txt file by default but you can specify another location. Find the temporary directory on your machine with the getenv("TEMP") mel command.
Computed Nodes
Performs a high-level trace of the compute path by toggling the trace object that prints out the nodes being computed. This only works in DG and Serial modes.
Trace results are saved in Maya’s runtime directory in the file _Trace_Compute.txt. Find the runtime directory using the getenv ("MAYA_LOCATION") mel command.
Graph Inspection
Choose what you want in the reports and then click Print to print reports of the following:
What to Include
Select All for a complete report or Selected to filter the report for the elements you specify below:
Evaluation nodes and dirty plugs
Prints the list of plugs that the Evaluation Manager sets to dirty before evaluation and computation.
Results are displayed in the Script Editor.
Evaluation nodes and connections
Prints a list of evaluation nodes and connections on the selected nodes, or the entire scene, if nothing is selected.
Results are displayed in the Script Editor.
Scheduling Information
Prints a list of scheduling nodes that the Evaluation Manager uses to run its evaluation. If Expand Clusters is turned on, all of the members of the cluster nodes are also shown. If Expand Clusters is off, only the cluster node is shown.
Results are displayed in the Script Editor. If Output PDF is set, scheduling graph is drawn in a .pdf file.
Expand Clusters
Includes all members of the cluster nodes with the Scheduling Information.
Output PDF
Creates an Adobe .pdf file of your report.
Note: This option only prints Scheduling Information for the current release.
Dynamic Attributes
Connected dynamic attributes sometimes create artificial dependencies that can prevent parallelism, which negate any performance gains from parallel evaluation. Use these tools to show connections between those types of dynamic attributes.
Print extra connections
Click Print to display a list of connections discovered between dynamic attributes. Results are displayed in the Script Editor.
Remove extra connections
Only use this option for debugging purposes, as it is meant to give an idea of potential performance gains that would occur when extra dependencies are removed. Use caution, as this option is an aggressive tool and could alter the evaluation output.
Important: Data Loss! Do not accidentally save this version of the scene after activating this option as data is lost.
Scene simplification
Retrieves the selected object's minimum dependencies.
Select minimal scene
Use this option identify everything required to evaluate the selected objects.
Remove all except minimal scene
Deletes all every object that is not considered essential by the minimal scene selection option above.
Important: Data Loss! Do not accidentally save this version of the scene after activating this option.
Launch Profiler
Opens the Profiler, a tool to help locate performance bottlenecks in your scene by recording and depicting the amount of time that each significant event, such as evaluation tasks, consumes.

Custom Evaluators

Use the button to view supported configuration options for the associated custom evaluator. See the -c / -configuration flag in the evaluator command reference.

For background on the invisibility, frozen, dynamics and deformer evaluators, see Evaluator Reference. More technical detail is available in the Using Parallel Maya document.

Important: Changing the default enabled/disabled state may cause instabilities or degrade performance. Proceed with caution.
For information about the dynamics Evaluator listed here, see the Dynamics section, below.
Custom evaluator Purpose
invisibility Removes invisible nodes (and any that drive them) from evaluation. For more details on the invisibility evaluator, see the Evaluator Reference.
Note: The scene looks the same, regardless of whether the evaluator is enabled or not.
See the Evaluator reference for more information about the invisibility evaluator.
frozen Handles "freezing" workflows provided to control which part of the scene does or does not evaluate.

See the Evaluator reference for more information about the frozen evaluator.

timeEditorCurveEvaluator Deals with custom curve evaluation requirements from the Time Editor
dynamics Responsible for the correct evaluation of dynamics nodes that have unorthodox evaluation requirements.

See the Evaluator reference for more information about the dynamics evaluator.

ikSystem Manages evaluation complications that arise from multi-handle IK systems.
disabling Disables the Evaluation Manager (used for debugging purposes).
reference Improves performance of scenes with loaded/unloaded references.
deformer Provides support for GPU execution of supported deformers. The deformer evaluator implements the GPU Override option

See the Evaluator reference for more information about the deformer evaluator.

transformFlattening Improves performance of long transform hierarchies.
pruneRoots Improves performance by scheduling together small individual tasks to reduce scheduling overhead

Dynamics

Configures the dynamics evaluator. The dynamics evaluator is responsible for the correct evaluation of dynamics nodes that have unorthodox evaluation requirements.
Note: For an in-depth technical discussion of the dynamic evaluator, see Using Parallel Maya.
Mode
Choose from five options:
Name Function
Disabled Disables Parallel evaluation/Evaluation Manager as soon as there are active dynamics nodes in the scene.
Legacy 2016 Reproduces the default settings of the 2016 release, by disabling evaluation as soon as blacklisted nodes appear in the scene.

The following node types are blacklisted:

  • nucleus
  • pointEmitter
  • rigidSolver
  • rigidBody
  • particle
  • geoConnector
  • field
  • fluidShape
  • and any type derived from these.

Supported Implements complex evaluation for supported dynamics nodes and disables Parallel evaluation/Evaluation Manager as soon as there are blacklisted nodes in the scene.

The following node types are blacklisted:

  • rigidSolver
  • rigidNode
  • particle (unless also a nBase)
  • fluidShape
  • fluidEmitter
  • dynHolder
  • collisionModel
  • dynController
  • dynGlobals
  • spring
  • membrane
  • and any type derived from these.

Everything (NOT SUPPORTED) Uses all nodes, even problematic ones, as this mode does not use a blacklist,
Custom (NOT SUPPORTED) This mode lets you try unsupported combinations of the options below…
Advanced
Disabling Nodes
Disables the set of nodes that causes Parallel evaluation/Evaluation Manager.
Handled Nodes
The set of nodes read by the dynamics evaluator which that handles their evaluation.
Action
Select the action that the dynamics evaluator performs on the handled nodes.
Name Function
None Ignores the nodes.
Evaluate Implements evaluation whenever special evaluation requirements are required.
Freeze Causes the Dynamics evaluator to freeze all of the nodes it processes in their current state. No evaluation is performed, the node is unaffected; this is the fastest method.

GPU Override

Displays the following reports in the Script Editor. See Evaluator Reference for a description of this evaluator and Using Parallel Maya for technical information about GPU Override.

Active deformation chains
Compiles a list of deformation chains (that is a mesh and at least one deformer,) that are handled by the GPU evaluator.
Mesh information
Prints information about the current GPU deformation support for each mesh. If the mesh is currently handled by the GPU deformer, its deformation chain appears in the list. If the mesh is not handled by the GPU deformer, the list displays the reason for its exclusion.
Selected nodes status
Prints information about the current GPU deformation support for the selected nodes. If the node is currently handled by the GPU deformer, its deformation chain appears in the list. If the node is not handled by the GPU deformer, the list displays the reason for its exclusion.
Clusters
Prints a list of nodes for each cluster handled by deformer evaluator. Each deformer chain has its own cluster.

Selection

Select the following:

Nodes under evaluation manager control
Changes the selection to only nodes under the control of the Evaluation Manager. Nodes that are not directly or indirectly animated are not included in the set.
Upstream nodes
Selects all nodes that are currently under Evaluation Manager control that are upstream from the current selection. The nodes selected before the operation depend on which upstream nodes are selected after the operation.
Downstream nodes
Selects all nodes that are currently under Evaluation Manager control that are downstream from the current selection. The downstream nodes selected that are selected after the operation depend on which nodes are selected before the operation.

Upstream versus Downstream nodes

All nodes with connections in the Evaluation Graph are considered either Upstream or Downstream.

In the following diagram, you can see how Upstream and Downstream nodes interact.

Upstream is required by:
  • nurbsCone1_translateX => nurbsCone1
  • nurbsCone1_translateX is upstream of nurbsCone1
  • nurbsCone1_translateX is required by nurbsCone1
Downstream depends on:
  • nurbsCone1_translateZ => nurbsCone1
  • nurbsCone1 is downstream of nurbsCone1_translateZ
  • nurbsCone1 depends on nurbsCone1_translateZ

Cycles

An in-depth explanation of Cycles and their part in the evaluation process can be found in Using Parallel Maya.

Full Graph
Creates .PDF and .DOT files to show the scene's current evaluation graph.
Output Folder
Type the path for the folder where the cycle cluster list is saved. Click Generate to create the list. Click the folder icon to open a file browser where you can navigate to an appropriate folder.
Output base file name
Shows the file name for the base file. The default is _EvaluationGraph_.
The generated files will add .DOT and .PDF to the chosen base file name.
Generate
Creates a Graphviz .DOT file with the current evaluation graph. If the Perform transitive reduction option is active, an extra .DOT (.tr.dot) is created that has the output of the transitive reduction (performed by Graphviz tred command). The .DOT file is then converted to a PDF file (using Graphviz dot command) and opened using the system's default PDF reader application.
Open
Opens the newly-created PDF file.
Perform transitive reduction
Activate to perform Transitive reduction the output graph to remove redundant dependencies to de-clutter the output graph.
Mark clusters in full graph
Activate this option to highlight evaluation clusters in the output graph.
Cycle Graph
Cycle clusters field
Click Generate to display a list of cycle clusters in the current scene ordered by number of nodes in the cluster (largest first) in this field. Clusters that contain an amount of nodes below the chosen threshold will not be included in the list.
For each cluster, the number of nodes and the first node of the cluster is printed. You can query the full cluster with the evaluationManager command.
Click Refresh to update the list.
Cycle Size Threshold
Define a minimum size for the cycle clusters. The default is 100.
Note: Small cycles are likely to be relevant for performance analysis.
Shortest Path

When both a source node and destination node are specified in the currently selected cluster, both nodes are highlighted in green the output graph. The path from the source node to the destination node is blue, the path from the destination node to the source node is red.

Note: Deactivate Transitive reduction when using this setting as it can remove connections from those paths.
Highlighted paths are useful for investigating large cycles as it breaks them up, allowing for better parallelism. This can illustrate why two nodes that should only have a one-way dependency in the current setup actually have a two-way dependency.
Output Folder
Type the path for the folder where the cycle cluster list is saved. Click Generate to create the list. Click the folder icon to open a file browser where you can navigate to an appropriate folder.

Results are saved in Maya's temp directory. Find the temporary directory on your machine with the getenv (" TEMP ") mel command.

Output Base File Name
Shows the file name for the base file. The default is _CycleCluster_.
Perform transitive reduction
Activate to perform Transitive reduction on the output graph to remove redundant dependencies to de-clutter the output graph.
Dependencies
This section lets you generate a graph to show dependencies between two sets of nodes. This can be helpful to illustrate why two sets of nodes that should not depend on each other actually have dependencies on one another.
Upstream/Downstream nodes
Choose the nodes you want to use as the Upstream/Downstream node list and click Choose Selected to use this set of nodes.
Output Folder/Output Base File Name
Type the path for the folder where the graph is saved. Click Generate to create the graph. Click the folder icon to open a file browser where you can navigate to the appropriate folder.
Perform transitive reduction
Activate to perform Transitive reduction the output graph to remove redundant dependencies to de-clutter the output graph

Validation

Run performance test
Runs emPerformanceTest on the current scene in DG, Serial, and Parallel mode. Results are displayed in the Script Editor. This test can be used to obtain benchmarks of your scene using different evaluation modes.
Run Correctness test
Runs the emCorrectnessTest on the current scene. The Correctness Test runs the animation in Serial mode (without GPU Deformer Evaluation), and Parallel mode (with and without GPU Deformer Evaluation) and compares the evaluation output to validate correctness. Results are displayed in the Script Editor.

Reports

This section contains reports that you can generate for the scene. Currently, there is only one report about expressions. Results are displayed in the Script Editor.

Expressions
If active, reports the total number of expression nodes, along with the number of safe and unsafe expression nodes.
Safe expressions are expressions which can have multiple outputs, as long as they are functions of its input.
Safe expressions only output is a function of its input (the input being read through DG connections) and call no command other than mathematical functions. These nodes cannot have any side effects so they can be evaluated at the same time as other nodes. You cannot evaluate unsafe expressions in parallel with any other nodes. Unsafe expressions cannot be evaluated in parallel with any other nodes
This report checks for the different types of expressions which might have a performance impact for your scene.
Click Generate to create the report.

Freezing

These options let you activate or disable sections of the DAG (Directed acyclic graph) to improve performance. When Explicit Propagation is activated, everything that is set to frozen (either directly or indirectly) is not scheduled for evaluation, which improves playback performance. If you select Runtime Propagation instead, sections of the graph are still scheduled but are skipped at runtime.

Animated frozen states are still scheduled as they first must be evaluated to determine if they are required.

Frozen Propagation
Activate this option to set any reference nodes that are frozen to force nodes that they reference to also be frozen, regardless of any edits applied to them.
Runtime
This setting enables downstream pruning only at runtime. The frozen nodes are still scheduled, but once they are found to be frozen, all downstream evaluation is skipped.
Explicit
Activating this option is equivalent to enabling the frozen evaluator. It uses the freeze options to prevent any scheduling of nodes not evaluated by direct or indirect freezing. This setting provides the maximum playback acceleration.
Downstream/Upstream freeze mode
Lets you specify the strictness of the Freeze mode. Choose from Upstream or Downstream.
None No downstream/upstream propagation.
When All Parents are Frozen The downstream/upstream node is frozen only when all of its upstream/downstream nodes are frozen.
Always All downstream/upstream nodes from a frozen node are also frozen, even if they have other non-frozen inputs.
Freeze Invisible
Propagates the frozen state down the DAG (Directed acyclic graph) hierarchy to all invisible children. This lets you freeze (make invisible) a root node and freeze its entire DAG hierarchy. Without this option, you need have to freeze each node individually.
Nodes
Display Layers
Makes a node that is a member of an invisible frozen display layer frozen as well.
Directly Frozen nodes
Click Select to choose which nodes are frozen.
Click Print to print a list of which nodes are frozen.
Click Unfreeze All to deselect every node that has been frozen.

Scheduling

Scheduling type override
This option lets you choose a scheduling type override to apply to all nodes of a given types using the tools listed below. The following is a description of each override type:
Scheduling type override Description
None No scheduling type override. This is the default setting.
Parallel Asserts that the node and all third-party libraries used by the node are thread-safe. The scheduler evaluates instances of this node at the same time as instances of other nodes without restriction
Serialize Asserts it is safe to run this node along with instances of other nodes. However, all nodes of this scheduling type should be executed sequentially within the same evaluation chain.
Globally serialize Asserts it is safe to run this node along with instances of other nodes but only a single instance of this node is run at a time. Use this setting if the node relies on a static state, which might lead to unpredictable results if multiple node instances were simultaneously evaluated. The same restrictions may apply if third-party libraries store states.
Untrusted Asserts this node is not thread-safe and that no other nodes should be evaluated while an instance of this node is evaluated. Untrusted nodes are deferred to the end of the evaluation schedule, and can introduce costly synchronization.
Registered Node Types

Select a Node Type from the Registered Node Types list and choose the scheduling type override you want to apply to specify when nodes are scheduled for Parallel evaluation by the scheduler. Click Refresh to update the Node Types list.

Override for selected types(s)
Print
Click Print to display the currently activated scheduling overrides on node types selected in the Registered Node Types list.
Set
Click Set to assign the same scheduling type as set in the Scheduling type override options to all selected node types in the Registered Node Types list.
Selected Nodes
Select a node from the scene and choose the scheduling type override you want to apply to specify when nodes are scheduled for Parallel evaluation by the scheduler.
Override for type(s) selected node(s)
Print Displays the currently activated scheduling overrides on the types of each selected nodes in the scene.
Set Assigns the same scheduling type as set in the Scheduling type override option to the types of each selected nodes in the scene.
Type used for selected node(s)
Type used for selected node(s)
Print Displays the actual scheduling types used by the scheduler for each selected nodes in the scene, taking into account overrides or displaying the unmodified scheduling type if no override is present.