• 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.
Last commit
Last update
AddHDF5Flags.cmake Loading commit data...
AddNiftiFlags.cmake Loading commit data...
CMakeLists.txt Loading commit data...
DuneuroMacros.cmake Loading commit data...
FindHDF5WRAP.cmake Loading commit data...
FindNifti.cmake Loading commit data...
FindTBB.cmake Loading commit data...