Skip to content

Added GPU interface for connected components algorithm#3621

Draft
olegkkruglov wants to merge 69 commits into
uxlfoundation:mainfrom
olegkkruglov:cc-gpu
Draft

Added GPU interface for connected components algorithm#3621
olegkkruglov wants to merge 69 commits into
uxlfoundation:mainfrom
olegkkruglov:cc-gpu

Conversation

@olegkkruglov
Copy link
Copy Markdown
Contributor

Description

  • CC GPU kernel dispatch — Added select_kernel_dpc.cpp instantiation for connected components (the GPU backend path that dispatches to the GPU kernel), mirroring the same pattern already used by triangle counting.
  • CC dispatch chain refactoring — Aligned the connected components dispatch chain with triangle counting: the ops dispatcher (vertex_partitioning_ops.hpp) now extracts topology via csr_topology_builder and passes it directly to backend_default, instead of passing the full graph. Template parameters renamed from Graph to Topology throughout select_kernel.hpp.
  • CC CPU kernel topology specialization — Added a topology<int32_t> specialization of vertex_partitioning_kernel_cpu in vertex_partitioning_default_kernel.hpp so the CPU path can accept topology directly (matching the new dispatcher signature).
  • DPC++ queue overloads for vertex_partitioning — Added vertex_partitioning(sycl::queue, ...) overloads in vertex_partitioning.hpp and detail/vertex_partitioning_ops.hpp to enable GPU dispatch from user code.
  • BUILD file updates — Added frontier primitive dependency, split CC tests into CPU-only (tests) and GPU (gpu_tests) suites, added connected_components to DPC++ examples BUILD.
  • csr_topology.hpp — Extended to_device() to also transfer _rows_vertex array (ensures full topology is available on device for CC's afforest algorithm).

Checklist:

Completeness and readability

  • I have commented my code, particularly in hard-to-understand areas.
  • I have updated the documentation to reflect the changes or created a separate PR with updates and provided its number in the description, if necessary.
  • Git commit message contains an appropriate signed-off-by string (see CONTRIBUTING.md for details).
  • I have resolved any merge conflicts that might occur with the base branch.

Testing

  • I have run it locally and tested the changes extensively.
  • All CI jobs are green or I have provided justification why they aren't.
  • I have extended testing suite if new functionality was introduced in this PR.

Performance

  • I have measured performance for affected algorithms using scikit-learn_bench and provided at least a summary table with measured data, if performance change is expected.
  • I have provided justification why performance and/or quality metrics have changed or why changes are not expected.
  • I have extended the benchmarking suite and provided a corresponding scikit-learn_bench PR if new measurable functionality was introduced in this PR.

@olegkkruglov olegkkruglov added new algorithm New algorithm or method in oneDAL interfaces Update interfaces labels May 6, 2026
@olegkkruglov olegkkruglov force-pushed the cc-gpu branch 2 times, most recently from 571370b to 273cdaf Compare May 11, 2026 16:30
…consistency; update related functionality; fixed bug for SIGSEGV
- Removed the existing frontier_dpc.hpp file to streamline the codebase.
- Introduced new test files for advance operation, BFS, and basic frontier operations.
- Implemented comprehensive tests to validate the functionality of the frontier data structure.
- Enhanced the frontier class with additional methods for better performance and usability.
- Ensured compatibility with SYCL and improved device memory management.
…ble declarations in BitmapKernel and frontier_dpc implementations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

interfaces Update interfaces new algorithm New algorithm or method in oneDAL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants