Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize merge_sort algorithm for largest data sizes #1977

Open
wants to merge 71 commits into
base: main
Choose a base branch
from

Conversation

SergeyKopienko
Copy link
Contributor

@SergeyKopienko SergeyKopienko commented Dec 19, 2024

In this PR we extends the approach from #1933 to merge_sort algorithm.

…introduce new function __find_start_point_in

Signed-off-by: Sergey Kopienko <[email protected]>
…introduce __parallel_merge_submitter_large for merge of biggest data sizes

Signed-off-by: Sergey Kopienko <[email protected]>
…using __parallel_merge_submitter_large for merge data equal or greater then 4M items

Signed-off-by: Sergey Kopienko <[email protected]>
Signed-off-by: Sergey Kopienko <[email protected]>
…rename template parameter names in __parallel_merge_submitter

Signed-off-by: Sergey Kopienko <[email protected]>
Signed-off-by: Sergey Kopienko <[email protected]>
…introduce __starting_size_limit_for_large_submitter into __parallel_merge

Signed-off-by: Sergey Kopienko <[email protected]>
…introduce _split_point_t type

Signed-off-by: Sergey Kopienko <[email protected]>
…remove usages of std::make_pair

Signed-off-by: Sergey Kopienko <[email protected]>
…optimize evaluation of split-points on base diagonals

Signed-off-by: Sergey Kopienko <[email protected]>
…extract eval_split_points_for_groups function

Signed-off-by: Sergey Kopienko <[email protected]>
…extract run_parallel_merge function

Signed-off-by: Sergey Kopienko <[email protected]>
…using SLM bank size to define chunk in the eval_nd_range_params function

Signed-off-by: Sergey Kopienko <[email protected]>
…using SLM bank size to define chunk in the eval_nd_range_params function (16)

Signed-off-by: Sergey Kopienko <[email protected]>
…restore old implementation of __find_start_point

Signed-off-by: Sergey Kopienko <[email protected]>
…rename: base_diag_part -> steps_between_two_base_diags

Signed-off-by: Sergey Kopienko <[email protected]>
…fix an error in __parallel_merge_submitter_large::eval_split_points_for_groups

Signed-off-by: Sergey Kopienko <[email protected]>
…erge_submitter_large` into one `__parallel_merge_submitter` (#1956)
…fix review comment: remove extra condition check from __find_start_point_in

Signed-off-by: Sergey Kopienko <[email protected]>
…fix review comment: fix condition check in __find_start_point_in

Signed-off-by: Sergey Kopienko <[email protected]>
…apply GitHUB clang format

Signed-off-by: Sergey Kopienko <[email protected]>
Signed-off-by: Sergey Kopienko <[email protected]>
…fix ordering of captured variables in submit calls

Signed-off-by: Sergey Kopienko <[email protected]>
…fix compile error after merge changes from main branch

Signed-off-by: Sergey Kopienko <[email protected]>
…fix review comment: declare all internal staff in __parallel_merge_submitter_large as private

Signed-off-by: Sergey Kopienko <[email protected]>
Signed-off-by: Sergey Kopienko <[email protected]>

# Conflicts:
#	include/oneapi/dpl/pstl/hetero/dpcpp/parallel_backend_sycl_merge.h
#	include/oneapi/dpl/pstl/hetero/dpcpp/parallel_backend_sycl_merge_sort.h
@SergeyKopienko SergeyKopienko added this to the 2022.8.0 milestone Dec 19, 2024
@SergeyKopienko SergeyKopienko marked this pull request as draft December 19, 2024 09:06
…o/optimize_merge_sort_V1

Signed-off-by: Sergey Kopienko <[email protected]>

# Conflicts:
#	include/oneapi/dpl/pstl/hetero/dpcpp/parallel_backend_sycl_merge.h
Signed-off-by: Sergey Kopienko <[email protected]>

# Conflicts:
#	include/oneapi/dpl/pstl/hetero/dpcpp/parallel_backend_sycl_merge.h
#	include/oneapi/dpl/pstl/hetero/dpcpp/parallel_backend_sycl_merge_sort.h
#	include/oneapi/dpl/pstl/hetero/dpcpp/parallel_backend_sycl_utils.h
#	test/parallel_api/algorithm/alg.merge/merge.pass.cpp
….h - let's move __event_chain into returns __future

Signed-off-by: Sergey Kopienko <[email protected]>
….h - avoid if - if - else - else in __find_or_eval_sp

Signed-off-by: Sergey Kopienko <[email protected]>
….h - remove local variables from __subgroup_bubble_sorter::sort

Signed-off-by: Sergey Kopienko <[email protected]>
….h - remove extra logic from __merge_sort_global_submitter::eval_nd_range_params

Signed-off-by: Sergey Kopienko <[email protected]>
@SergeyKopienko SergeyKopienko marked this pull request as ready for review December 20, 2024 16:22
…t_global_submitter::operator()

Signed-off-by: Sergey Kopienko <[email protected]>
Signed-off-by: Sergey Kopienko <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant