![]() |
Reference documentation for deal.II version 8.5.1
|
#include <deal.II/base/aligned_vector.h>
Public Member Functions | |
| AlignedVectorMove (T *source_begin, T *source_end, T *destination, const bool copy_source) | |
| virtual void | apply_to_subrange (const std::size_t begin, const std::size_t end) const |
Additional Inherited Members | |
Private Member Functions inherited from parallel::ParallelForInteger | |
| virtual | ~ParallelForInteger () |
| void | apply_parallel (const std::size_t begin, const std::size_t end, const std::size_t minimum_parallel_grain_size) const |
Move and class that actually issues the copy commands in AlignedVector. This class is based on the specialized for loop base class ParallelForLoop in parallel.h whose purpose is the following: When calling a parallel for loop on AlignedVector with apply_to_subranges, it generates different code for every different argument we might choose (as it is templated). This gives a lot of code (e.g. it triples the memory required for compiling the file matrix_free.cc and the final object size is several times larger) which is completely useless. Therefore, this class channels all copy commands through one call to apply_to_subrange for all possible types, which makes the copy operation much cleaner (thanks to a virtual function, whose cost is negligible in this context).
Definition at line 321 of file aligned_vector.h.
|
inline |
Constructor. Issues a parallel call if there are sufficiently many elements, otherwise works in serial. Copies the data from the half-open interval between source_begin and source_end to array starting at destination (by calling the copy constructor with placement new). If the flag copy_source is set to true, the elements from the source array are simply copied. If it is set to false, the data is moved between the two arrays by invoking the destructor on the source range (preparing for a subsequent call to free).
Definition at line 335 of file aligned_vector.h.
|
inlinevirtual |
This method moves elements from the source to the destination given in the constructor on a subrange given by two integers.
Implements parallel::ParallelForInteger.
Definition at line 356 of file aligned_vector.h.
1.8.13