ciohoudini 1.2.1rc6
Houdini submitter hda for the Conductor Cloud Rendering Platform.

# Conductor for Houdini

A ROP to submit work from Houdini to Conductor's cloud. Compatible with Python3 versions of Houdini for all platforms. Available to beta customers. Contact us!


## Install

**To install the latest version.**
```bash
pip install --upgrade ciohoudini --target=$HOME/Conductor
```

**To install a specific version, for example 0.1.0.**
```bash
pip install --upgrade --force-reinstall ciohoudini==0.1.0 --target=$HOME/Conductor
```

**Then setup the Houdini module.** 

```bash
python ~/Conductor/ciohoudini/post_install.py
```

> **NOTE** An alternative is to install from the Plugins page in the [Conductor Companion app](https://docs.conductortech.com/getting_started/installation/#companion-app)

## Usage

Create a ConductorJob Rop and attach a render nodes. Use the Conductor->Submit menu item to submit several jobs, or press the Submit button in a job's properties panel.


For detailed help, checkout the [tutorial](https://docs.conductortech.com/tutorials/houdini) and [reference](https://docs.conductortech.com/reference/houdini) documentation.


## Contributing

See [CONTRIBUTING](CONTRIBUTING.md)

## License
[MIT](https://choosealicense.com/licenses/mit)

## Changelog

## Version:1.2.1-rc.6 -- 14 Dec 2025
- Clean up unused methods in PDG Scheduler


## Version:1.2.1-rc.5 -- 12 Dec 2025
- Add validator to detect mismatched engine types between Conductor Scheduler instance and Karma ROP nodes
- Fix PDG ML node execution issue
- Fix an execution issue when the Topnet node category type is Sop


## Version:1.2.1-rc.4 -- 09 Dec 2025
- Fix instance type parsing to support all CoreWeave and GCP machine types
- Update urllib3 version


## Version:1.2.1-rc.2 -- 07 Dec 2025
- Fix ML node output path resolution in PDG wrapper


## Version:1.2.1-rc.1 -- 19 Nov 2025
- Supporting file cache nodes in PDG

# Conductor PDG Scheduler for Houdini

A powerful scheduler that seamlessly integrates Houdini PDG graphs with the Conductor render farm, offering flexible submission strategies optimized for different workflow requirements.

## Version History
### Version 1.1.0-beta.32
- **New: Advanced PDG Execution Engine** with 7 specialized cooking methods
  - Auto-fallback mode (tries all methods sequentially)
  - Network execution (standard cookWorkItems with fallbacks)
  - PDG context cook (7 fallback strategies for complex networks)
  - Output node cook (targeted cooking with cascading fallbacks)
  - Scheduler execution (direct scheduler-based with work item generation)
  - Individual node cook (per-node execution with 6 methods each)
  - Dependency chain cook (topology-aware DAG execution)
- Added threaded cooking with progress monitoring and timeout handling
- Improved compatibility across different PDG network types and schedulers

### Version 1.1.0-beta.32
- Add support for SideFXLabs ML/CV nodes in PDG workflows

### Version 1.1.0-beta.26
- Fix PDG execution on Houdini 21 by setting PDG_SCRIPTDIR environment variable

### Version 1.1.0-beta.25
- Synchronized local and cloud output dir path mappings

### Version 1.1.0-beta.22
## PDG Universal Wrapper Improvements

* **Implemented wedge fallback mechanism**: Created manual rendering pipeline that executes when work items are not generated

* **Enhanced file collection system**: Fixed output tracking to properly capture both PDG-generated files and fallback renders, including token expansion (__PDG_DIR__) and directory scanning for unreported outputs

* **Fixed execution mode issue on Windows platform**: Resolved path handling and process execution compatibility issues specific to Windows environments

* **Fixed render directory on Windows**: Corrected Windows path separator handling and directory creation for render outputs to ensure proper file organization
  
### Version 1.1.0-beta.20
## 1. TOP Network Discovery
Fixed the on_schedule callback node hierarchy traversal:
- **Issue**: Callback stopped at intermediate TOP HDAs instead of finding root topnet
- **Solution**: Modified traversal logic to continue up through TOP HDAs to locate the actual topnet container

## 2. HDA Asset Collection  
Enhanced assets.py to automatically detect scene HDAs:
- **User HDAs**: Automatically collects and uploads project-specific HDA files
- **System Filtering**: Excludes Houdini built-in and package HDAs from upload list

## 3. Path Transformations
Synchronized local and cloud path mappings:
- **Output Path**: Applied Conductor transformations to maintain correct output directory references
- **PDG_RENDER_DIR**: Ensured environment variable stays synchronized between local and cloud environments

## 4. Folder Creation Cleanup
Optimized directory structure management:
- **Removed**: Eliminated unnecessary folder creation in user home directory
- **Preserved**: Maintained PDG required pdgtemp folder for proper workflow execution

### Version 1.1.0-beta.19
- Apply Conductor path transformations to ensure output path and PDG_RENDER_DIR environment variable remain synchronized after cloud upload
### Version 1.1.0-beta.18
## 1. Test Geometry Node Support
Enhanced Conductor Scheduler to properly handle Houdini built-in test geometries:
- Filtered out internal opdef: paths that were blocking render farm uploads
- Added HH/scripts to PATH environment variable and HHP/pdgjob for PDG script execution
- Configured HOUDINI_PATH with resource directories (HH/geo, HH/pic, HH/glsl) to access built-in assets like pig.bgeo.sc

## 2. Thread Count Configuration
Added use_max_processors parameter with three modes:
- **Manual**: User-defined thread count entry
- **All Processors**: Use all available processors
- **All Minus One**: Use all processors except one for system stability

## 3. HIP File Versioning Fix
Corrected file versioning behavior to save incremental versions in the same directory as the original HIP file rather than temporary directories

### Version 1.1.0-beta.17
* Updating dependencies

### Version 1.1.0-beta.8
* **Extended TOP network container support** - Now compatible with all container types (topnet, topnetmgr, etc.)
* Renamed parameters with "pdg_" to "conductor_" to avoid errors
* **Improved progress tab UI** - Increased button height for better accessibility
* **Enhanced Scheduler submission diagnostics** - Added detailed logging throughout the submission pipeline

### Version 1.1.0-beta.7
- Updating Conductor scheduler log level

### Version 1.1.0-beta.6
- Output path calculation improvement

### Version 1.1.0-beta.5
- Fixed critical UI display issues in Houdini 21 ensuring seamless parameter rendering and compatibility across versions
- Developed intelligent two-tab configuration system with automatic parameter scaling based on instance type detection (CPU cores/GPU count)
- **Execution Tab**: Dynamic PDG slot allocation, adaptive cook modes (Aggressive/Parallel/Hybrid), auto-scaled memory pools (1GB→16GB), parallel I/O with compression
- **Optimization Tab**: Multi-GPU management (CUDA/OptiX), renderer-specific settings (Karma/Mantra/Arnold/Redshift), single-machine NUMA optimization, real-time performance profiling

### Version 1.1.0-beta.2
## Submission Methods

### 1. Distributed Processing
  - Enabled via `Submit Each Work Item On a Single Machine` option
  - Distributes individual work items across multiple machines in the farm
  - Enables massive parallelization and optimal resource utilization
  - Each work item runs independently on its assigned machine

### 2. Single Machine Processing
  - Consolidates all work items onto a single high-spec machine
  - Perfect for workflows requiring:
    - Shared memory access
    - Inter-dependent simulations
    - Scenarios where overhead from distribution outweighs parallelization benefits

## Key Benefits

- **Seamless Scaling** - From local prototyping to massive farm deployments
- **Intelligent Batching** - Reduces submission overhead
- **Automatic Versioning** - Ensures reproducible results
- **Environment Management** - Comprehensive support for complex pipeline integrations

## Version:1.0.1-rc.5 -- 21 Oct 2025
* Adds a log message when scanning for dependencies


## Version:1.0.1-rc.4 -- 17 Oct 2025
* Add progress messages to simulations
* Saves scene prior to submitting
* Houdini will return an error code if a Task fails - indicating a Task failure

## Version:1.0.1-rc.3 -- 06 Oct 2025
* Adds support for Houdini 21


## Version:1.0.1-rc.2 -- 02 Sep 2025
* Adds a Geo/Sim submitter
## Version:1.0.1-rc.1 -- 17 Jun 2025

* Display an error if the submitter node isn’t connected to a Conductor account
* Resolve the bug that appeared when a render plugin is added and then removed

## Version:1.0.0-rc.1 -- 11 Jun 2025

**Conductor Submitter Redesign**
*   Introduced three dedicated nodes Solaris, Husk, and ROP to provide tailored solutions for diverse rendering tasks.
*   Each node offers customized parameters and processes, eliminating unnecessary complexity and focusing on specific user needs.

**Solaris Submitter**
*   Retrieves image output paths directly from the USD stage, prioritizing the outputimage attribute in the USD Render ROP 
and falling back to productName in the first ancestor Render Product Node if unset.
*   Implemented logic to derive a common image output path when multiple render products are present in the USD stage.
*   Added validation checks to flag image output paths that are too shallow such as root level directories.

**Husk Submitter**
*   Refined USD dependency scraping for more reliable and accurate asset resolution.
*   Optimized the submission process by removing unnecessary extra files from uploads, reducing transfer times.

**ROP Submitter & General ROP Handling**
*   Dedicated ROP submitter

**General Fixes and Improvements**
*   Enhanced nearest-version selection algorithm for host software and drivers
*   Disabled deprecated image-path parameters
*   Resolved issues with render script path handling and image output path handling, particularly improving compatibility 
and reliability on Windows.
*   Significantly accelerated submitter load times 
*   Improved asset scanning efficiency 
* 
* Version 1.0.0-beta.25
* Image Output Path Retrieval from USD Stage
* 
* Version 1.0.0-beta.22
* Implemented logic in Solaris nodes to derive a common image output path when multiple render products are present.
* Added a validation check to flag image output paths that are too shallow e.g., root-level directories.
* Removed the use of a default fallback image output path to ensure explicit user configuration.
*
* Version 1.0.0-beta.21
* Retrieving the image output path from the USD stage
* 
* Version 1.0.0-beta.17
* Defining a fallback value for the output image path.
* 
* Version 1.0.0-beta.16
* Converting the image output parameter from a string to a label.
* 
* Version 1.0.0-beta.15
* Enhanced nearest version selection algorithm
* Reverted image output path parameters to Python code and disabled the parameter
* Fixed an issue with the render script path on Windows
* 
* Version 1.0.0-beta.14
* Asset scan now runs only when requested.
* Improved submitter loading speed.
* Fixed frame range issue in the Solaris submitter.
* 
* Version 1.0.0-beta.12
* Improved asset scanning by excluding unnecessary temporary files.
* Enhanced the display of the preemptible parameter 
* 
* Version 1.0.0-beta.11
* Enhanced output image path handling and submission process
* 
* Version 1.0.0-beta.10
* Improved Image Output Path Handling on Windows
* 
* Version 1.0.0-beta.2
* USD Dependency Scraping: Improved USD file dependency handling.
* Husk Submitter Option: Added an option to use only USD scraping.
* ROP Parameter Update: Converted parameters under ROP options from expressions to strings.
* Solaris Image Output Path: Now prioritizes the outputimage parameter in the USD Render ROP; falls back to productName in the first ancestor Render Product Node if unset.
* Optimized Husk Submission: Removed extra files from the upload process in the Husk Submitter.
* 
* Version 1.0.0-beta.1
* Conductor Submitter Redesign: 
* Introducing 3 New Nodes — Solaris, Husk, and ROP Nodes
* We undertook a comprehensive redesign of the Houdini Conductor Submitter to elevate its functionality and user experience. 
* The updated design focuses on streamlining workflows, enhancing usability, and providing tailored solutions for diverse rendering tasks.
* By introducing distinct submitter nodes with customized parameters and workflows, we’ve ensured that users can focus on their specific needs without unnecessary clutter or complexity.


## Version:0.7.15 -- 20 Aug 2024
* LOPs node reference is now included in scraping
* Added instance type best fit logic
* Evaluates variable values, such as HIP in the output path parameter, ensuring they are dynamically resolved instead of being treated as literal strings.
* Removed redundant Not a drive letter. Skipping messages to streamline output and improve clarity.
* Enhanced the submitter to comprehensively print all potential output paths for each ROP, including direct parameters, USD stage attributes, environment variables, custom logic, and various dynamic cases. This ensures that all possible output locations are identified and displayed for complex rendering setups.


## Version:0.7.12 -- 12 Jul 2024
* Implementing support for Houdini TOPs network
* Exit submission when scene fails to load
* Resolving the problem associated with job submission when the 'Use upload daemon' option is selected.
* Improving the Efficiency of Asset Scanning
* Implement a validation warning to alert users when any assets in the output folder are detected as previously uploaded. 
* Eliminate the need for manually setting the environment variable 'ARNOLD_ADP_DISABLE' to true, as this functionality is now integrated into the render farm's backend system.
* Enhancing the Efficiency of Asset Scanning

## Version:0.7.11 -- 12 Dec 2023
* Addressing the issue of arnold job shutdown after render completion

## Version:0.7.10 -- 20 Nov 2023
* Prevent files in the output folder from being included in the asset upload list
* Auto chunking of large tasks
* Updating the ciocore library to version 7.0.1 or above
* Add support for improved logging.

## Version:0.7.7 -- 08 Aug 2023
* Progress tab improvements

## Version:0.7.6 -- 07 Aug 2023
* Progress tab improvements

## Version:0.7.5 -- 03 Aug 2023
* Minor update to the plugin installation instructions.

## Version:0.7.4 -- 03 Aug 2023
* Performance Tab Improvement
* Better frame range source usability


## Version:0.7.3 -- 02 Aug 2023
* Support for Houdini Solaris USD rendering.
* Submission of multiple USD render rop jobs simultaneously.
* Compatibility with other renderers such as redshift and karma.
* Introducing a new progress tab for better job submission tracking.


## Version:0.7.2 -- 10 Jul 2023

* Disables Conductor's path helper on all platforms
  
## Version:0.7.1 -- 16 Jun 2023

* Adds support for redshift and karma.

### Version:0.6.0 -- 25 May 2023

* Adding fml feature. [7458b95]

### Version:0.5.3 -- 15 Dec 2022

* Fix a bug where the driver path expression in the HDA went missing. [678adc5]

### Version:0.5.2 -- 14 Dec 2022

* Adds arnold logging and turns on abort-on-license-fail and other render configurations. [e5cc088]

### Version:0.5.1 -- 09 Dec 2022

* Adds the ability to define a Unix style wildcard list of filename patterns to be excluded from the asset scan. [05a020b]

### Version:0.5.0 -- 07 Dec 2022

* Adds a button to export an executable submission script without actually submitting it. [ff43928]

### Version:0.4.13 -- 06 Oct 2022

* Use faster ciopath. [1bcffb1]
* Use host version for hserver hack. [c9bfcf0]

### Version:0.4.12 -- 23 Sep 2022

* Resolves JOB varaiable, op:, and temp: tokens. 
* Adds a version guard for the hserver licensing hack so that it only affects 18.5.X and doesn't break 19.X. [ca6fe54]

### Version:0.4.11 -- 23 Sep 2022

* Remove circular dependency. [1db1374]

### Version:0.4.10 -- 20 Jul 2022

* The default dependency scraping algorithm has been tightened up in order to avoid accidentally scraping the home directory. [cef8338]

* Adds a convenient button to copy the render script to shared location. This is useful if an uploader daemon is running on a machine that does not have access to the Conductor installation. [abc8989]

* Adds a UI that allows you to add existing local environment variables to be set on the remote Linux render node. Any Windows path variables are converted to Posix paths. [fa83ba6]

* If the OCIO variable is set locally, it is added to the remote environment, and the containing folder is uploaded. [2b76b20]

* The convenience function to add HDAs to the asset list now adds the .hda files, and  not the entire folder, which could include several backup files.

* Ensure that any assets that happen to be found in the output folder are excluded from the upload.

* If file references are found to have relative paths, we now tests to see if they exist in the HIP folder, and if not, we don't upload them. If they just happen to found in the folder where Houdini was invoked from, then we treat them as missing and ignore them.

* If file references are found to be internal to Houdini (op:... temp:... etc.) then we ignore them. 

### Version:0.4.8 -- 19 Jul 2022

* The asset-scan regular expression now detects any tokens between angle brackets, even custom tokens like `<OBJ_NAME>` It also allows for more variation of delimiters around number expressions, such as `_###_` or `.###-` etc. [d2235eb]

### Version:0.4.7 -- 19 Jul 2022

* Implement a pathmapping function in chrender which will turn Windows paths into Posix paths. [a7b84f2]

### Version:0.4.6 -- 15 Jul 2022

* Validate thath assets are accessible by the uploader daemon.
* Replace backslashes for forwards slashes in the output path.
 
### Version:0.4.5 -- 14 Jul 2022

* Fix local upload and enable driver browse. [9c57ed0]

### Version:0.4.4 -- 13 Jul 2022

* Workaround for an issue with hserver 18.5. Explicitly set it to use 19.0 and set a variable to cause the hserver to use HTTP. [da52188]

### Version:0.4.3 -- 12 Jul 2022

* Turn off the CONDUCTOR_PATHHELPER variable for all submissions. [7c616de]

### Version:0.4.2 -- 11 Jul 2022

* Scrape hdas and give the option to embed HDAs automatically. [83de99f]

### Version:0.4.1 -- 07 Jul 2022

* Add the Vray Renderer node to the list of supported drivers. [a63ed81])

### Version:0.4.0 -- 07 Jul 2022

* Implements a Submission dialog to present validation messages, submission responses, and dashboard links.  

### Version:0.3.4 -- 06 Jul 2022

Various fixes for installation on Windows.

### Version:0.3.1 -- 07 Jun 2022

* Added documentation. Use the (?) icon in the node UI. [5dddca3]
* Fixed bug where the payload was not updated when a new node was created after a connection had already been established. [121c03d]

### Version:0.3.0 -- 04 Jun 2022

* Now renders mantrra, renderman, anmd dop simulation. 

### Version:0.2.0 -- 02 May 2022

* Work in progress

### Version:0.1.3 -- 26 Apr 2021

* Frame sequences section working. [96fd012]

### Version:0.1.2 -- 22 Apr 2021

* Move post_install script to the correct place. [d3d49be]

### Version:0.1.1 -- 22 Apr 2021

* Add boilerplate for pip and circle-ci, migrate houdini from client tools, adds ciocore data integration such as packages, inst types, and projects. WIP still, but at least there are no errors on node creation. [a914e69]

--