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