Mutlithreaded Convolutions
Pre-releaseThis pre-release has a relatively small code change with few PRs, but represents a major change in the computations performed during approximate convolution. Each particle is now projected through a shared memory multithreaded loop -- and applies to both FunctorPairwise
and FunctorPairwiseMinimize
. This release also introduces a new constraint on factors, such that multiple threads do not conflict on any memory shared during residual computations. Please use Threads.nthreads()
and Threads.threadid()
for allocating separate memory space in the functor objects. The new keyword addFactor!(..., threadmodel=MultiThreaded / SingleThreaded)
can be used for better error stack trace in SingleThreaded
mode. Please set the number of shared memory threads in the .bashrc
file with export JULIA_NUM_THREADS=4
, or which ever amount you prefer. Lastly, also note that the shared memory threads are an addition on top of the existing multiprocess computations already used with the Bayes tree formulation.