• Andreas Nüßing's avatar
    [MultiThreading] first draft for multithreading · 4da59be8
    Andreas Nüßing authored
    We add a first draft of multithreading for the meeg driver.
    The computation and application of the transfer matrix are then
    done in parallel.
    In order to benefit from the multi-threading, the functions for
    applying the transfer matrices now take a list of dipoles instead
    of only a single dipole.
    
    If TBB is not found, we fall back to the sequential implementation.
    Each thread has its own local copy of the solver backend and the
    {EEG,MEG}TransferMatrixSolver using TBBs thread local storage.
    Within a parallelized call, the number of threads to be used by the
    scheduler can be limitied by setting `numberOfThreads` in the
    config tree. If `numberOfThreads` is not set, we let the scheduler
    decide about the number of threads.
    
    Since the interface now takes multiple dipoles, the `setSourceModel`
    method got removed and the source model is selected via the config
    tree of the apply{EEG,MEG}TransferMatrix or solveEEGForward methods.
    (This also simplifies the handling of the thread local storage).
    
    Note that this also adds a FindTBB.cmake script (MIT licensed).
    This should be removed, once support for TBB has entered dune-common.
    4da59be8
config.h.cmake 1.4 KB