-
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