You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.5 added ability to use Thrust library for parallel algorithms. This is done in src/detail/Algorithms.h using custom Aboria algorithms, which use tag dispatching to either call Thrust or STL algorithms, depending on if the Level 0 vector is a STL vector or a Thrust vector.
For STL vectors, and if using a c++17, parallel algorithms could be used for all algorithms, this functionality needs to be added (i.e. detect if c++17 available, and use a parallel executor if so)
The text was updated successfully, but these errors were encountered:
There are a number of functions/algorithms in src/detail/Algorithms.h that are based on the parallel algorithms in Thrust (https://thrust.github.io/), eg. for_each, gather, scatter_if, inclusive_scan, transform_exclusive_scan. These algorithms are used by Aboria in numerous places, and it is assumed that every algorithm is run in parallel.
Every data structure in Aboria is based on a STL-like vector. The default is to use std::vector, but you can also choose to use thrust::device_vector. Passing a thrust::device_vector to any of the functions in stc/detail/Algorithms.h will call the Thrust equivalent algorithm, passing a std::vector::iterator will call the STL equivalent algorithm, or (if this doesn't exist), an custom implementation of the algorithm.
Naturally, all the Thrust algorithms are already parallelized, I would like do do the same for the STL side. It seems like the easiest way to approach this is to use the new parallel algorithms in c++17, but I am open to alternatives.
(btw. I'm also not happy with the organisation of src/detail/Algorithms.h, everything is just lumped in one file and difficult to find, so any improvements here would also be welcome)
v0.5 added ability to use Thrust library for parallel algorithms. This is done in
src/detail/Algorithms.h
using custom Aboria algorithms, which use tag dispatching to either call Thrust or STL algorithms, depending on if the Level 0 vector is a STL vector or a Thrust vector.For STL vectors, and if using a c++17, parallel algorithms could be used for all algorithms, this functionality needs to be added (i.e. detect if c++17 available, and use a parallel executor if so)
The text was updated successfully, but these errors were encountered: