I am interested in speeding up my image manipulation by using all the physical cores on the processor (I have 6). Looking at my system monitor on Linux, it appears that the image nodes only use one core; therefore I should be able to wrap the slowest nodes in parallel chunk loops to distribute the workload over all 6 cores.
Before I go crazy with this, do any of the image nodes already distribute the work over multiple cores? If so I can focus my efforts on wrapping the other nodes.
Most nodes do in fact not use multi threading natively, in many cases because the algorithms do not easily allow for parallel computation on the same image. In these cases using data parallel computation with the parallel chunk loop node can greatly improve your processing speed. I can recommend you not only wrap single nodes but larger branches of the workflow in the parallel loop nodes, as this will improve your overall throughput, as it reduces IO overhead.
As far as I can tell from a quick glance at our code base, the nodes that are multi threaded are those who perform the very complicated computations, some examples:
- Align Image
- GraphCut 2D
- Morphological Image / Labeling Ops
Thanks for the information and thanks for answering all of these questions. The image nodes are great -- two thumbs up from this user!