Houdini 18.0 Executing Tasks

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.

Generate all static work items but do not cook anything

Choose __Tasks > Generate Static Work Items___.

Generate work items for a particular node, dynamic or static

Right-click the node and choose Generate Node

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.

Limit the number of resources used by the local scheduler

See resource limits

Cook the entire graph on the farm, disconnected from the current session

Each farm scheduler node has UI for this, which is called Submit Graph As Job. For example see HQueue.

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.

Executing Tasks


Next steps


  • 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.

  • Processor Node Callbacks

    Processor nodes generate work items that can be executed by a scheduler

  • Partitioner Node Callbacks

    Partitioner nodes group multiple upstream work items into single partitions.

  • Scheduler Node Callbacks

    Scheduler nodes execute work items

  • Custom File Tags and Cache Handlers

    PDG uses file tags to determine the type of an output file.

  • Python API

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