|
template<typename CMP> |
void | firstPhase (const CMP &Cmp) |
|
int | getElemPerBlock () const |
|
int | getSetsNeeded (int elemPerBlock) const |
|
void | init (Containers::ArrayView< Value, Devices::Cuda > arr, int gridDim, int blockDim, int desiredElemPerBlock, int maxSharable) |
|
template<typename CMP> |
int | initTasks (int elemPerBlock, const CMP &Cmp) |
|
template<typename CMP> |
void | performSort (const CMP &Cmp) |
|
void | processNewTasks () |
|
template<typename CMP> |
void | secondPhase (const CMP &Cmp) |
|
template<typename Array> |
void | sort (Array &arr) |
|
template<typename Array, typename Compare> |
void | sort (Array &arr, const Compare &cmp) |
|
|
Containers::ArrayView< Value, Devices::Cuda > | arr |
|
Containers::ArrayView< Value, Devices::Cuda > | aux |
|
Containers::Array< Value, Devices::Cuda > | auxMem |
|
Containers::Array< TASK, Devices::Cuda > | cuda_2ndPhaseTasks |
|
Containers::Array< int, Devices::Cuda > | cuda_2ndPhaseTasksAmount |
|
Containers::Array< int, Devices::Cuda > | cuda_blockToTaskMapping |
|
Containers::Array< TASK, Devices::Cuda > | cuda_newTasks |
|
Containers::Array< int, Devices::Cuda > | cuda_newTasksAmount |
|
Containers::Array< int, Devices::Cuda > | cuda_reductionTaskInitMem |
|
Containers::Array< TASK, Devices::Cuda > | cuda_tasks |
|
int | desired_2ndPhasElemPerBlock |
|
int | desiredElemPerBlock |
|
const int | g_maxTasks = 1 << 14 |
|
int | host_1stPhaseTasksAmount = 0 |
|
int | host_2ndPhaseTasksAmount = 0 |
|
int | iteration = 0 |
|
int | maxBlocks |
|
std::size_t | maxSharable |
|
int | maxTasks |
|
int | threadsPerBlock |
|
◆ firstPhase()
template<typename Value>
template<typename CMP>
does the 1st phase of Quicksort until out of task memory or each task is small enough for correctness, secondphase method needs to be called to sort each subsequences
◆ getElemPerBlock()
returns the optimal amount of elements per thread needed for phase
◆ getSetsNeeded()
returns how many blocks are needed to start sort phase 1 if
- Parameters
-
elemPerBlock | were to be used |
◆ initTasks()
template<typename Value>
template<typename CMP>
returns the amount of blocks needed to start phase 1 while also initializing all tasks
◆ processNewTasks()
update necessary variables after 1 phase1 sort
◆ secondPhase()
template<typename Value>
template<typename CMP>
The documentation for this class was generated from the following file:
- src/TNL/Algorithms/Sorting/detail/Quicksorter.h