ARB/Topics/MultiThreading

From KitwarePublic
Jump to navigationJump to search

Purpose

VTK has adopted a MPI based strategy for parallelization. New strategies are currently designed to use new architectures like multi-core or hybrid systems. The aim of this page is to provide an overview of the current efforts.

Strategies

Several strategies can be used to parallelize VTK. We try to summarize those here :

  • MPI-based parallelism :
    • VTK can be executed in an MPI job, even on non-distributed computers. Datasets are then distributed between MPI processes.
  • Execution Model
    • Parallel pipeline branches : each independent branch can be executed simultaneously.
    • Concurrent streaming of multiple pieces : several pieces can be streamed together in a pipeline, each one at a different stage of the pipeline.
    • Apply a single algorithm concurrently to multiple blocs : if the algorithm treat each bloc independently, it could be applied to all blocs simultaneously.
  • Intra-algorithm parallelism : many algorithms in VTK can be parallelized at a fine grain (per cell, point, row...) level.

Current Efforts

  • Execution Model :
    • Claudio T. Silva et al. have been working on the HyperFlow enhancement.
  • Intra-algorithm :
    • Imaging pipeline
    • Ray casting algorithms

The proposed Task Stealing framework focuses primarily on the intra-algorithm parallelization, and could also be used by the execution model.