Evaluation Toolkit
To open the Evaluation Toolkit
Use the
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
, 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
.
-
-
-
-
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.
-
-
Displays the output of the
dot -v command, which reports the dot command software version.
Choose the appropriate evaluation mode from the
-
-
-
-
Uses dependency graph-based evaluation mode for your scene. (See also
Dependency graph.) This was the default evaluation mode before
Maya 2016.
-
-
Uses the Evaluation Manager but limits evaluation to a single core (
serial evaluation). Use
to troubleshoot your scene as it prioritizes scene fidelity over performance so you
can locate evaluation errors.
NOTE: Sometimes scenes run more slowly in
evaluation mode than in
mode. This is because
evaluates more nodes than
mode. Because of this detailed evaluation, if the scene looks incorrect in
mode, it is unlikely to work properly in
mode.
Sometimes improper evaluation in
mode is caused by custom plug-ins.
-
-
Like Serial (above) but uncached redetermines the evaluation order at every frame.
Not recommended.
-
-
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.
-
-
Works with the Evaluation Manager to accelerate deformations in either
or
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: works only with Viewport 2.0 and does not work with Quadro 4000 graphics cards on
OSX.
-
-
Activates/disables pre-population with the controller mechanism in the Evaluation
Manager when building.
-
-
Toggles the Evaluation Manager for Manipulation. Valid only in Serial and Parallel
modes.
Use these options in this section to identify the problem areas of your scene.
-
-
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.
-
-
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.
-
-
Choose what you want in the reports and then click
to print reports of the following:
- What to Include
-
Select
for a complete report or
to filter the report for the elements you specify below:
-
-
Prints the list of plugs that the
sets to dirty before evaluation and computation.
-
-
Prints a list of evaluation nodes and connections on the selected nodes, or the entire
scene, if nothing is selected.
-
-
Prints a list of scheduling nodes that the
uses to run its evaluation. If
is turned on, all of the members of the cluster nodes are also shown. If
is off, only the cluster node is shown.
Results are displayed in the
Script Editor. If
is set, scheduling graph is drawn in a .
pdf file.
- Expand Clusters
-
Includes all members of the cluster nodes with the
.
- Output PDF
-
Creates an Adobe .
pdf file of your report.
NOTE:This option only prints Scheduling Information for the current release.
-
-
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.
-
-
Click Print to display a list of connections discovered between dynamic attributes.
Results are displayed in the
Script Editor.
-
-
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.
-
-
Retrieves the selected object's minimum dependencies.
-
-
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.
-
-
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.
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
,
,
and
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
Evaluator listed here, see the Dynamics section, below.
| Custom evaluator
|
Purpose
|
|
|
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
evaluator.
|
|
|
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
evaluator.
|
|
|
Deals with custom curve evaluation requirements from the Time Editor
|
|
|
Responsible for the correct evaluation of dynamics nodes that have unorthodox evaluation
requirements.
See the
Evaluator reference for more information about the
evaluator.
|
|
|
Manages evaluation complications that arise from multi-handle IK systems.
|
|
|
Disables the Evaluation Manager (used for debugging purposes).
|
|
|
Improves performance of scenes with loaded/unloaded references.
|
|
|
Provides support for GPU execution of supported deformers. The
evaluator implements the
option
See the
Evaluator reference for more information about the
evaluator.
|
|
|
Improves performance of long transform hierarchies.
|
|
|
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.
-
-
Choose from five options:
| Name
|
Function
|
|
|
Disables Parallel evaluation/Evaluation Manager as soon as there are active dynamics
nodes in the scene.
|
|
|
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.
|
|
|
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.
|
|
|
Uses all nodes, even problematic ones, as this mode does not use a blacklist,
|
|
|
This mode lets you try unsupported combinations of the options below…
|
-
-
-
-
Disables the set of nodes that causes Parallel evaluation/Evaluation Manager.
-
-
The set of nodes read by the dynamics evaluator which that handles their evaluation.
-
-
Select the action that the dynamics evaluator performs on the handled nodes.
| Name
|
Function
|
|
|
Ignores the nodes.
|
|
|
Implements evaluation whenever special evaluation requirements are required.
|
|
|
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.
|
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
.
-
-
Compiles a list of deformation chains (that is a mesh and at least one deformer,)
that are handled by the GPU evaluator.
-
-
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.
-
-
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.
-
-
Prints a list of nodes for each cluster handled by deformer evaluator. Each deformer
chain has its own cluster.
Select the following:
-
-
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.
-
-
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.
-
-
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
An in-depth explanation of
and their part in the evaluation process can be found in
Using Parallel Maya.
-
-
Creates .PDF and .DOT files to show the scene's current evaluation graph.
-
-
Type the path for the folder where the cycle cluster list is saved. Click
to create the list. Click the folder icon

to open a file browser where you can navigate to an appropriate folder.
-
-
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.
-
-
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.
-
-
Opens the newly-created PDF file.
-
-
Activate to perform Transitive reduction the output graph to remove redundant dependencies
to de-clutter the output graph.
-
-
Activate this option to highlight evaluation clusters in the output graph.
-
-
-
-
Click
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

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.
-
-
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.
-
-
Type the path for the folder where the cycle cluster list is saved. Click
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.
-
-
Shows the file name for the base file. The default is
_CycleCluster_.
-
-
Activate to perform Transitive reduction on the output graph to remove redundant
dependencies to de-clutter the output graph.
-
-
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
to use this set of nodes.
- Output Folder/Output Base File Name
-
Type the path for the folder where the graph is saved. Click
to create the graph. Click the folder icon

to open a file browser where you can navigate to the appropriate folder.
-
-
Activate to perform Transitive reduction the output graph to remove redundant dependencies
to de-clutter the output graph
-
-
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.
-
-
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.
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.
-
-
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
to create the report.
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.
-
-
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.
-
-
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.
-
-
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
or
.
|
|
No downstream/upstream propagation.
|
|
|
The downstream/upstream node is frozen only when all of its upstream/downstream nodes
are frozen.
|
|
|
All downstream/upstream nodes from a frozen node are also frozen, even if they have
other non-frozen inputs.
|
-
-
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
-
-
-
Makes a node that is a member of an invisible frozen display layer frozen as well.
- Directly Frozen nodes
-
Click
to choose which nodes are frozen.
Click
to print a list of which nodes are frozen.
Click
to deselect every node that has been frozen.
-
-
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
|
|
|
No scheduling type override. This is the default setting.
|
|
|
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
|
|
|
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.
|
|
|
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.
|
|
|
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.
|
-
-
Select a Node Type from the
list and choose the scheduling type override you want to apply to specify when nodes
are scheduled for Parallel evaluation by the scheduler. Click
to update the
Node Types list.
-
-
-
-
Click
to display the currently activated scheduling overrides on node types selected in
the Registered Node Types list.
-
-
Click
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.
-
-
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.
-
-
|
|
Displays the currently activated scheduling overrides on the types of each selected
nodes in the scene.
|
|
|
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)
-
-
-
|
|
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.
|