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. Activate the options in the
Evaluation Toolkit to manipulate all aspects of the
Evaluation Manager, including enabling debugging modes and output. See also
Test Performance with Evaluation Modes.
Note: The information here is provided as a guide. If you want technical background on these processes, see
Using Parallel Maya or the
Evaluator Reference, which contains further description of some of the custom evaluators.
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 Graphviz 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.
- Advanced
-
- 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.
-
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 Trace
- 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 Trace
- 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.
- 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.
- Launch Analytics window
- Opens the Analytics Window, a tool to help analyze the contents of your scene or collection of scenes by running scripts on the scene(s) and reporting back what it finds.
- Evaluation Graph Inspection
- This section provides a collection of tools that let you see how your evaluation graph and scheduling graph are constructed.
-
- Nodes to Inspect
- For each of the tools in the Evaluation Graph Inspection section you can choose to inspect either the entire graph, in which case you would choose
All from the drop down menu, or only a subset, when you would choose
Selected.
- When you choose
Selected another field labeled
Levels Deep appears. When displaying graph information you are usually interested in the connections between nodes. The
Levels Deep value tells the tool how many steps away from the selected nodes should be included in the output.
- In this context, "steps away" means "number of connections it has to traverse in the graph to go from one node to another". For example, if you have the graph connections A -> B -> C then node B is depth one from both A and C, and C is depth 2 from A.
- For clarity, the functions below will be described as if you chose the
All option.
-
- Graphical Output
- Tools in this section will provide an output in either PDF or
DOT format for visualization of the evaluation or scheduling graphs. The visualization is similar to what you see in the node editor for the dependency graph.
Format
|
Select the type of output you wish to produce. If PDF is set, then the graph is sent to a
.pdf file. If DOT is set, then the graph is sent to a
.dot file. In both cases, the tool attempts to open the file in your default application for the generated file so you can see it immediately. For example Adobe Acrobat for a
.pdf file and graphviz for a
.dot file.
The
Transitive Reduction checkbox is an option that tries to reduce the number of unnecessary connections in the graph being displayed. The resulting output is cleaner though it can take significantly longer to generate.
|
Output file
|
This field shows where the file is created. By default, it is stored in your MAYA_LOCATION directory. Enter a new file name or browse to a new directory to change the location. The extension on the filename always reflects your currently selected
Format
(.pdf or
.dot).
|
Visual Graph
|
When you invoke the
Show button the visual representation of the Evaluation Graph will be generated in the format you have selected, and the result will open in your default application for that file type.
The
Add Dirty Plugs option includes a list of all plugs being set dirty in each node by the
Evaluation Manager. Normally, you would not want this amount of detail, but it's useful for discovering missing attribute dependencies in the graph
|
Visualize Scheduling Graph
|
When you invoke the
Show button, the visual representation of the Scheduling Graph is generated in the format you have selected, and the result will open in your default application for that file type.
The Scheduling Graph differs from the Evaluation Graph in that it groups sets of nodes together for evaluation as a group. For example, the invisibility evaluator clusters all of the invisible node together and evaluates them, by doing nothing, as one.
The
Add Cluster Contents option lets you switch the cluster nodes from displaying a count of the nodes they contain to a list of all nodes by name. This is useful when you want to see which nodes a particular custom evaluator has clustered together.
|
- Text Output
- Tools in this section will provide an output in either JSON or plain text format for visualization of the evaluation or scheduling graphs.
Format
|
Two types of output are available. The
JSON format is more verbose; describing all node information and relationships in a key/value form. The
Summary format compresses the information into a more compact display for quick reference
|
Output Location
|
You can choose to send the results to the
Script Editor directly, or to an external
File. The script editor is most useful when you want to quickly examine part of a scene; the external file is best for parsing and interpreting results offline.
|
Output File
|
This field is active only when you select the
File option as the
Output Location. It shows where the file will be created. By default, it will go into your MAYA_LOCATION directory. Enter a new file name or browse to a new directory to change that..
|
Evaluation Nodes
|
Prints a list of evaluation nodes and connections on the selected nodes, or the entire scene, if nothing is selected.
Activate
Show Dirty Plugs to print a list of plugs that the
Evaluation Manager sets to dirty before evaluation and computation.
|
Evaluation Nodes
|
When you invoke the
Show button, a list of all of the nodes in the Evaluation Graph is generated in the format you have selected. This usually means all of the nodes that are either animated or controllers.
The
Add Dirty Plugs option lets you include a list of all plugs being set dirty in each node by the
Evaluation Manager.
|
Node Scheduling types
|
When you invoke the
Show button, the scheduling types for the nodes in the Evaluation Graph are displayed. The types are
Parallel,
Serial,
Globally Serial, and
Untrusted. See the
Using Parallel Maya for more information.
|
Scheduling Graph
|
When you invoke the
Show button, the contents of the Scheduling Graph are displayed in the selected format.
The Scheduling Graph differs from the Evaluation Graph in that it groups sets of nodes together for evaluation as a group. For example, the invisibility evaluator will cluster all of the invisible node together and evaluate them, by doing nothing, as one.
Use the
Add Cluster Contents option to include the set of nodes in all of the clusters being scheduled. This is useful for seeing which nodes a particular custom evaluator has clustered together.
|
- 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 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.
- 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.
Custom Evaluators
Click the checkbox next to each Custom Evaluator to activate custom evaluation.
Use the
(question mark)button to view supported configuration options for the associated custom evaluator. See the -c / -configuration flag in the
evaluator command reference.
Use the
("i") button to query information related to the associated custom evaluator.
Use the
("n") button to open a window where you can view the nodes claimed by the associated custom evaluator.
Tip: You can use the evaluator command to query the available/active evaluators or modify currently active evaluators. Some evaluators support using the
_nodeType_ flag to filter out or include nodes of certain types. Query the
_info_ flag on the evaluator for more information on what it supports.
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.
|
curveManager
|
|
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).
|
hik
|
Improves performance of HumanIK rigs.
|
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.
- 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:
|
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:
|
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 output graph is saved. Click
Generate to create the output graph. 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.
- Perform transitive reduction
- Activate to perform Transitive reduction so that the output graph removes redundant dependencies to de-clutter the output graph.
Note: This process can be very long for large scenes.
- Mark clusters in full graph
- Activate this option to highlight evaluation clusters in the output graph.
- Open
- Opens the newly-created PDF file.
Cycle Graph
This section provides utilities for investigating cycle clusters in your scene. Cycle clusters are evaluated serially, therefore large cycle clusters can reduce the potential for parallelism and prevent efficient use of all CPU cores. Large cycle clusters limit general scene performance and breaking them up yields beneficial performance gains.
- 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.
- Cycle Size Threshold
- Define a minimum number of nodes of cycle clusters to be included. The default is 100.
Note: Small cycles are likely to be less relevant for performance analysis.
- Refresh Cycle cluster list
- Click to update the cycle list.
- Select the cycle based on selected nodes
- Choose the cycle that contains the selected nodes.
- List the nodes in selected cycle cluster
- Show all nodes in the cycle cluster.
- 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.
- Shortest Path
-
- Source node
- Click
Pick Selected to set the Source node.
- Destination node
- Click
Pick Selected to set the Destination node.
- Shortest path only
- Activate this option to display only the nodes that are on the shortest paths.
- Output Folder
- Type the path for the folder where the cycle cluster graph is saved. Click
Generate to create the graph. Click the folder icon
to open a file browser where you can choose a destination folder.
- 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.
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. Chose from
Nodes or
Display Layers to make 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)
-
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.
|