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.