Commit 02e262b6 authored by Xuan Thang Nguyen's avatar Xuan Thang Nguyen
Browse files

refactor 1st phase

parent b2d7841f
Loading
Loading
Loading
Loading
+12 −25
Original line number Diff line number Diff line
@@ -280,33 +280,20 @@ void QUICKSORT::sort(const Function &Cmp)
            break;

        int externMemByteSize = elemPerBlock * sizeof(int);
        if (iteration % 2 == 0)
        {
        auto & task = iteration % 2 == 0? cuda_tasks : cuda_newTasks;
        cudaQuickSort1stPhase<Function>
            <<<blocksCnt, threadsPerBlock, externMemByteSize>>>(
                arr, aux, Cmp, elemPerBlock,
                    cuda_tasks, cuda_blockToTaskMapping);
                task, cuda_blockToTaskMapping);

        auto & newTask = iteration % 2 == 0? cuda_newTasks : cuda_tasks;
        cudaWritePivot<<<tasksAmount, 512>>>(
            arr, aux, Cmp, elemPerBlock,
                cuda_tasks,
                cuda_newTasks,
            task,
            newTask,
            cuda_newTasksAmount.getData(),
            cuda_2ndPhaseTasks, cuda_2ndPhaseTasksAmount.getData());
        }
        else
        {
            cudaQuickSort1stPhase<<<blocksCnt, threadsPerBlock, externMemByteSize>>>(
                arr, aux, Cmp, elemPerBlock,
                cuda_newTasks, cuda_blockToTaskMapping);

            cudaWritePivot<<<tasksAmount, 512>>>(
                arr, aux, Cmp, elemPerBlock,
                cuda_newTasks,
                cuda_tasks,
                cuda_newTasksAmount.getData(),
                cuda_2ndPhaseTasks, cuda_2ndPhaseTasksAmount.getData());
        }
        processNewTasks();
        iteration++;
    }