Skip to content

Finish task based threading - #92

Open
PierreMarchand20 wants to merge 8 commits into
mainfrom
finish_task_based_threading
Open

PierreMarchand20 wants to merge 8 commits into
mainfrom
finish_task_based_threading

Conversation

@PierreMarchand20

Copy link
Copy Markdown
Member

No description provided.

@PierreMarchand20
PierreMarchand20 force-pushed the finish_task_based_threading branch from 167533b to 6d45fe1 Compare October 13, 2026 14:06
@codecov

codecov Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.25328% with 24 lines in your changes missing coverage. Please review.
✅ Project coverage is 98.22%. Comparing base (658d8f0) to head (e41d77e).
⚠️ Report is 78 commits behind head on main.

Files with missing lines Patch % Lines
.../hmatrix/linalg/omp/add_hmatrix_matrix_product.hpp 50.00% 8 Missing ⚠️
...hmatrix/linalg/triangular_hmatrix_matrix_solve.hpp 88.57% 4 Missing ⚠️
...test_task_based_hmatrix_product_complex_double.cpp 87.50% 3 Missing ⚠️
...product/test_task_based_hmatrix_product_double.cpp 86.36% 3 Missing ⚠️
...rix/linalg/seq/triangular_hmatrix_matrix_solve.hpp 97.18% 2 Missing ⚠️
...ol/solvers/local_solvers/local_hmatrix_solvers.hpp 90.90% 1 Missing ⚠️
...ed_distributed_operator_product_complex_double.cpp 96.87% 1 Missing ⚠️
...task_based_distributed_operator_product_double.cpp 96.15% 1 Missing ⚠️
...s/hmatrix/test_task_based_hmatrix_dependencies.hpp 97.82% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #92      +/-   ##
==========================================
+ Coverage   97.19%   98.22%   +1.03%     
==========================================
  Files          80      211     +131     
  Lines        5132    12107    +6975     
==========================================
+ Hits         4988    11892    +6904     
- Misses        144      215      +71     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@PierreMarchand20
PierreMarchand20 force-pushed the finish_task_based_threading branch 2 times, most recently from 61ec9de to b9081a0 Compare October 15, 2026 06:14
PierreMarchand20 and others added 6 commits October 15, 2026 09:22
HMatrixTaskDependencies::L0 holds const HMatrix pointers; the task-based kernels write through the
HMatrix they receive, using the new get_mutable_node. Fix beta/alpha scaling of the whole matrix in
the task-based product and triangular solves called on a sub-block.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… task-based kernels.

Solves move to solve.hpp, with row-major task-based variants that only create the tasks.
LocalHMatrixSolver uses its execution policy for the solves too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The policy is used for the factorization of the local HMatrix and the solves
with it, through new execution policy overloads of
internal_triangular_hmatrix_matrix_solve,
internal_triangular_ldlt_hmatrix_matrix_solve and internal_apply_ldlt_diagonal
on a Matrix, with their task-based versions. The dense products and
factorization of the overlap stay sequential.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…xecution policy to scale.

Low-level sequential kernels go to seq/, OpenMP parallel-for ones to omp/ and
task-based ones to omp_task/ (without the task_based_ prefix in file names).
Top-level headers only keep the user-facing functions and the execution-policy
dispatch, including the new triangular_hmatrix_matrix_solve.hpp.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HMatrixTaskDependencies now also stores cuts of the target and source cluster
trees (target_L0, source_L0), used as dependencies on the output and input
vectors of the task-based product.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PierreMarchand20
PierreMarchand20 force-pushed the finish_task_based_threading branch 2 times, most recently from 4a5ddbc to 8762a84 Compare October 15, 2026 10:50
PierreMarchand20 and others added 2 commits October 15, 2026 15:36
… the task-based vector product.

New task-based kernel task_based_internal_add_hmatrix_matrix_product_row_major,
with the same dependencies as the vector one. task_based_internal_add_hmatrix_vector_product
used wrong offsets on clusters with a nonzero offset, which the tests did not
catch since they used root clusters and their check only failed on NaN.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ut leak detection.

LeakSanitizer may report allocations of libgomp for tasks with dependences
(see Test_task_based_hmatrix_factorization). The task-based checks of the
builder, product, distributed operator and local solver tests are moved to
test_task_based_* executables run with ASAN_OPTIONS=detect_leaks=0, so that
the other tests keep checking leaks. The task-based product test now runs with
1, 2 and 4 MPI processes, to check the products on local clusters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PierreMarchand20
PierreMarchand20 force-pushed the finish_task_based_threading branch from 8762a84 to e41d77e Compare October 15, 2026 13:37
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