#include <ogdf/energybased/fast_multipole_embedder/FMEMultipoleKernel.h>
Public Member Functions | |
FMEMultipoleKernel (FMEThread *pThread) | |
ArrayPartition | arrayPartition (uint32_t n) |
creates an array partition with a default chunksize of 16 More... | |
ArrayPartition | arrayPartition (uint32_t n, uint32_t threadNr, uint32_t numThreads, uint32_t chunkSize) |
returns an array partition for the given threadNr and thread count More... | |
template<typename F > | |
void | for_loop (const ArrayPartition &partition, F func) |
for loop on a partition More... | |
template<typename F > | |
void | for_tree_partition (F functor) |
for loop on the tree partition More... | |
void | multipoleApproxFinal (ArrayPartition &nodePointPartition) |
the final version, the wspd structure is only used for the top of the tree More... | |
void | multipoleApproxNoWSPDStructure (ArrayPartition &nodePointPartition) |
new but slower method, parallel wspd computation without using the wspd structure More... | |
void | multipoleApproxSingleThreaded (ArrayPartition &nodePointPartition) |
the single threaded version without fences More... | |
void | multipoleApproxSingleWSPD (ArrayPartition &nodePointPartition) |
the original algorithm which runs the WSPD completely single threaded More... | |
void | operator() (FMEGlobalContext *globalContext) |
main function of the kernel More... | |
void | quadtreeConstruction (ArrayPartition &nodePointPartition) |
sub procedure for quadtree construction More... | |
template<typename T , typename C > | |
void | sort_parallel (T *ptr, uint32_t n, C comparer) |
lazy parallel sorting for num_threads = power of two More... | |
template<typename T , typename C > | |
void | sort_parallel (T *ptr, uint32_t n, C comparer, uint32_t threadNrBegin, uint32_t numThreads) |
lazy parallel sorting for num_threads = power of two More... | |
template<typename T , typename C > | |
void | sort_single (T *ptr, uint32_t n, C comparer) |
sorting single threaded More... | |
Public Member Functions inherited from ogdf::fast_multipole_embedder::FMEKernel | |
FMEKernel (FMEThread *pThread) | |
bool | isMainThread () const |
returns true if this is the main thread ( the main thread is always the first thread ) More... | |
bool | isSingleThreaded () const |
returns true if this run only uses one thread ) More... | |
uint32_t | numThreads () const |
returns the total number of threads in the pool More... | |
void | sync () |
uint32_t | threadNr () const |
returns the index of the thread ( 0.. numThreads()-1 ) More... | |
Static Public Member Functions | |
static FMEGlobalContext * | allocateContext (ArrayGraph *pGraph, FMEGlobalOptions *pOptions, uint32_t numThreads) |
allocate the global and local contexts used by an instance of this kernel More... | |
static void | deallocateContext (FMEGlobalContext *globalContext) |
free the global and local context More... | |
Private Attributes | |
FMEGlobalContext * | m_pGlobalContext = nullptr |
FMELocalContext * | m_pLocalContext = nullptr |
Definition at line 61 of file FMEMultipoleKernel.h.
|
inlineexplicit |
Definition at line 63 of file FMEMultipoleKernel.h.
|
static |
allocate the global and local contexts used by an instance of this kernel
|
inline |
creates an array partition with a default chunksize of 16
Definition at line 91 of file FMEMultipoleKernel.h.
|
inline |
returns an array partition for the given threadNr and thread count
Definition at line 96 of file FMEMultipoleKernel.h.
|
static |
free the global and local context
|
inline |
for loop on a partition
Definition at line 128 of file FMEMultipoleKernel.h.
|
inline |
for loop on the tree partition
Definition at line 139 of file FMEMultipoleKernel.h.
void ogdf::fast_multipole_embedder::FMEMultipoleKernel::multipoleApproxFinal | ( | ArrayPartition & | nodePointPartition | ) |
the final version, the wspd structure is only used for the top of the tree
void ogdf::fast_multipole_embedder::FMEMultipoleKernel::multipoleApproxNoWSPDStructure | ( | ArrayPartition & | nodePointPartition | ) |
new but slower method, parallel wspd computation without using the wspd structure
void ogdf::fast_multipole_embedder::FMEMultipoleKernel::multipoleApproxSingleThreaded | ( | ArrayPartition & | nodePointPartition | ) |
the single threaded version without fences
void ogdf::fast_multipole_embedder::FMEMultipoleKernel::multipoleApproxSingleWSPD | ( | ArrayPartition & | nodePointPartition | ) |
the original algorithm which runs the WSPD completely single threaded
void ogdf::fast_multipole_embedder::FMEMultipoleKernel::operator() | ( | FMEGlobalContext * | globalContext | ) |
main function of the kernel
void ogdf::fast_multipole_embedder::FMEMultipoleKernel::quadtreeConstruction | ( | ArrayPartition & | nodePointPartition | ) |
sub procedure for quadtree construction
|
inline |
lazy parallel sorting for num_threads = power of two
Definition at line 155 of file FMEMultipoleKernel.h.
|
inline |
lazy parallel sorting for num_threads = power of two
Definition at line 165 of file FMEMultipoleKernel.h.
|
inline |
sorting single threaded
Definition at line 147 of file FMEMultipoleKernel.h.
|
private |
Definition at line 191 of file FMEMultipoleKernel.h.
|
private |
Definition at line 192 of file FMEMultipoleKernel.h.