Increase performance with the Evaluation Manager

The Evaluation Manager (EM) determines how to evaluate scenes, dividing the work among the available CPU and GPU computation resources to speed up performance. It works in the background, using the existing dirty propagation mechanism to convert the Directed Graph (DG) representation of your scene to a Forward Evaluation graph (FG). Once the FG is built, dirty propagation is disabled and an Evaluation schedule (ES) is built. The ES evaluates scene nodes in the correct order; this way, your scene produces the same result as with the “classic” Directed Graph-based evaluation.

You can watch a short movie that gives a high-level explanation of what the Evaluation Manager does here and for a more in-depth, technical explanation, read the Parallel Maya Whitepaper.

The FG determines dependencies between scene elements; if two nodes in the scene are independent, they are good candidates for Parallel evaluation on different processors.

Note: Sometimes nodes in a scene cannot be evaluated in Parallel mode, despite being independent, due to the node’s implementation. In these cases, nodes are classified according to their different “thread-safety” levels.
Note: Animation using FBIK reverts to Serial Evaluation as FBIK creates missing dependencies in the Evaluation Manager. As FBIK has been deprecated, use HIK for whole-body inverse kinematics and retargeting.

Evaluation Modes

Choose the appropriate evaluation mode from the (Editors > Settings/Preferences > Preferences > Animation > Evaluation section:
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.

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.

Differences between Evaluation Modes

Resource-heavy tasks take roughly the same amount of time in DG, Serial, and Parallel modes. For example, if you use a deformer that takes 0.5 seconds to deform a mesh, evaluating this deformer in Parallel does not add any change to performance.

If all EM/DG modes show the same bottleneck, addressing this problem will increase your performance gains. Use the Profiler to demonstrate in a graph the amount of time that each process consumes.

However, if you encounter problems that appear only in Parallel, this can indicate that there are thread contention problems with your scene, where multiple threads are trying to work at once while fighting for control of a shared resource.

Limitations

Some Maya features, such as Cached Playback, produce incorrect results when using the Evaluation Manager. This includes cases such as when Viewport 2.0 motion blur is enabled, or when the scene contains certain classic dynamics (for example, particles, cloth, rigid bodies).
Tip: You can run a script that returns a list of which dynamics nodes are causing problems with the Evaluation Manager. See Identify dynamics nodes that inhibit performance.

Performance issues can occur with Python Commands when executing large amounts of commands. If this occurs, define MAYA_RETAIN_PYTHON_GIL in your environment. (MAYA_RELEASE_PYTHON_GIL is deprecated. It is true by default and can be overwritten by MAYA_RETAIN_PYTHON_GIL.)

Also, Python performance issues can occur when evaluating other threads with custom Python nodes.

Refer to the release notes for a complete list of known limitations.