Skip to content
On this page

Incredibuild

Simplygon can use Incredibuild to distribute pipeline and pipeline batch execution. Setup of Incredibuild is outside the scope of this documentation, please refer to the Incredibuild documentation. The IBConsole.exe tool path must be set in the search paths in the environment where Simplygon is executing.

Multiple pipelines

Due to limitations in Incredibuild where only a single execution of IBConsole is allowed on a machine, calls to process multiple pipelines in multiple threads or processes will cause the IBConsole to block and execute the processing in a sequence rather than in parallel. If you plan on distributing multiple pipelines and scenes in parallel using Incredibuild you must use the pipeline batch API. A pipeline batch will allow Incredibuild to launch the processing of all pipelines and scenes in parallel, as it can be done in a single invocation of IBConsole

Distributed pipeline execution

Distribution using Incredibuild is enabled by passing the appropriate run mode to the pipeline run scene API.

Progress

Due to limitations in Incredibuild there are no progress events when using Incredibuild distribution. The execution will block on the run call until processing has completed

cpp
spReductionPipeline reductionPipeline = sg->CreateReductionPipeline();

// Process a scene from file directly using distribution
reductionPipeline->RunSceneFromFile( "input.obj", "output.obj", EPipelineRunMode::RunDistributedUsingIncredibuild );

// Or if you have a scene object, process it using distribution
reductionPipeline->RunScene( scene, EPipelineRunMode::RunDistributedUsingIncredibuild )
csharp
spReductionPipeline reductionPipeline = sg.CreateReductionPipeline();

// Process a scene from file directly using distribution
reductionPipeline.RunSceneFromFile( "input.obj", "output.obj", EPipelineRunMode.RunDistributedUsingIncredibuild );

// Or if you have a scene object, process it using distribution
reductionPipeline.RunScene( scene, EPipelineRunMode.RunDistributedUsingIncredibuild )
python
reductionPipeline = sg.CreateReductionPipeline()

# Process a scene from file directly using distribution
reductionPipeline.RunSceneFromFile( "input.obj", "output.obj", EPipelineRunMode_RunDistributedUsingIncredibuild )

# Or if you have a scene object, process it using distribution
reductionPipeline.RunScene( scene, EPipelineRunMode_RunDistributedUsingIncredibuild )

Distributed batch tool

Distribution using Incredibuild can be enabled when invoking the batch tool (SimplygonBatch.exe) by passing the -Incredibuild parameter on the command line

SimplygonBatch.exe -Incredibuild <path/to/pipeline.json> <input.scene> <output.scene>
SimplygonBatch.exe -Incredibuild <path/to/pipelinebatch.json>

Troubleshoot

I'm not getting any progress

Note that due to Incredibuild limitations, the batch tool cannot report any progress.

IBConsole limitation

Due to the limit of a single IBConsole active process, launching multiple SimplygonBatch instances with Incredibuild distribution will cause any second process to block until the first process has completed, effectively executing the pipelines in serial rather than parallel.