Houdini 17.5 Building procedural dependency graphs (PDG) with TOPs

Cooking the TOP network

How to cause the TOP network to actually do the work and produce the results specified by the network.

On this page

See also visualizing TOP network performance.


The TOP network attempts to minimize extra work by only re-doing work that changed (or might have changed) since the previous cook. This means a cook might do no work at all if nothing has changed.

TOPs uses a concept of marking work items "dirty" if they are (or might be) out of date and need to recook. The following rules how the TOP network decides what to recook.

  • If a node generates different work items than it did in the previous cook, it dirties all subsequent nodes.

  • Nodes that deal with external files (files not created within the TOPs network), such as File Pattern and Geometry Import, scan the files when they start and mark existing work items dirty if the corresponding file has changed.

  • Nodes that reference external Houdini nodes (such as ROP Geometry Output) check the references data when they start and mark existing work items dirty if the data has changed.

  • TOPs does not currently check input and output result files. For example, deleting or replacing an intermediate file will not automatically dirty work items that use that file as input.

  • Any work item whose attributes have changed since the last cook are considered dirty.

  • Changing parameters on a node dirties the node (since most work items are generated based on both incoming work items and parameter values).

    When parameters on a TOP node change (meaning the node must recook), the status icon next to the node becomes dim:

  • You can manually mark a work item, node, or the entire network dirty to force it to recook.


To...Do this

Cook the parts of the network that need cooking

Choose Tasks ▸ Cook Output Node.

Cook a single node (only if it needs cooking)

  • Select the node and choose Tasks ▸ Cook Selected Node


  • Right-click the node and choose Cook this node.

Force Houdini to recook the entire network

Choose Tasks ▸ Dirty and Cook Output Node.

Force a single node to cook

  • Select the node and choose Tasks ▸ Dirty and Cook Selected Node.


  • Right-click the node and choose Dirty and cook this node.

Mark the entire network dirty but don’t recook yet

Choose Tasks ▸ Dirty All.

Recook a single work item

Right-click the work item dot and choose Cook task.

Mark a single work item dirty but don’t recook yet

Right-click the work item dot and choose Dirty task.

Output flag and output nodes

  • Inside a TopNet, the output flag controls which node the network "works toward". Only nodes upstream from the node with the output flag cook when you ask the network to cook.

  • Inside a TOP subnetwork, if the subnet has an Output node, it represents the output of the subnet, ignoring any output flag.

  • If you create multiple Output nodes inside a TOP subnet, the subnet will have multiple output connectors, similar to the Split TOP.

Building procedural dependency graphs (PDG) with TOPs


Next steps

  • Running external programs

    How to wrap external functionality in a TOP node.

  • File tags

    Work items track the "results" created by their work. Each result is tagged with a type.

  • Feedback loops

    You can use for-each blocks to process looping, sequential chains of operations on work items.

  • Command servers

    Command blocks let you start up remote processes (such as Houdini or Maya instances), send the server commands, and shut down the server.

  • Integrating PDG and render farm software

    How to use different schedulers to schedule and execute work.

  • Visualizing work item performance

    How to visualize the relative cook times (or file output sizes) of work items in the network.

  • Tips and tricks

    Useful general information and best practices for working with TOPs.


  • All TOPs nodes

    TOP nodes define a workflow where data is fed into the network, turned into "work items" and manipulated by different nodes. Many nodes represent external processes that can be run on the local machine or a server farm.

  • Python API

    The classes and functions in the Python pdg package for working with dependency graphs.