pieper / SlicerParallelProcessing

Slicer modules for running subprocesses to operate on data in parallel
Other
11 stars 5 forks source link

ParallelProcessing

ParallelProcessing extension for 3D Slicer. Currently contains Processes module.

Processes

Slicer modules for running subprocesses to operate on data in parallel.

(Still a work in progress, but starting to be useable)

In particular, this is designed to work with python scripts that do headless processing (no graphics or GUI).

Installation

Simply run slicer with these arguments:

./path/to/Slicer --additional-module-paths path/to/SlicerProcesses/Processes

where 'path/to' is replaced with the appropriate paths. You could alternatively register the path in the Module paths of the Application Settings dialog.

Usage

This is designed to be a developer tool, so look at the Model and Volume tests at the bottom of the module source code.

The basic idea is:

Demo

Here's what the self-test looks like. What happens is that a dummy sphere is added to the scene 50 processes are queued, each of which applies a random offet to each of the vertices. The machine running the test has 12 cores, so you see the processes being executed aproximately in groups of 12. The second part shows running 5 parallel image filtering operations with different filter kernel radius values and then loading the results. Code for these demos is in this repository.

IMAGE ALT TEXT

Future Directions

Future

Add other parallel processing modules