From ca30d2b516760657681bf3a00559d187169bb030 Mon Sep 17 00:00:00 2001 From: Pierre Marchand Date: Tue, 28 May 2024 11:25:04 +0200 Subject: [PATCH] fixup --- .../linalg/add_hmatrix_hmatrix_product.hpp | 2 ++ .../htool/hmatrix/linalg/factorization.hpp | 21 +++++++++---------- .../triangular_hmatrix_hmatrix_solve.hpp | 1 + .../triangular_hmatrix_matrix_solve.hpp | 1 + .../hmatrix/tree_builder/tree_builder.hpp | 10 ++++----- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/include/htool/hmatrix/linalg/add_hmatrix_hmatrix_product.hpp b/include/htool/hmatrix/linalg/add_hmatrix_hmatrix_product.hpp index e861439a..3ee90888 100644 --- a/include/htool/hmatrix/linalg/add_hmatrix_hmatrix_product.hpp +++ b/include/htool/hmatrix/linalg/add_hmatrix_hmatrix_product.hpp @@ -7,6 +7,8 @@ #include "../lrmat/linalg/add_lrmat_lrmat_product.hpp" #include "../lrmat/linalg/add_matrix_lrmat_product.hpp" #include "../lrmat/linalg/add_matrix_matrix_product.hpp" +#include "./add_hmatrix_lrmat_product.hpp" +#include "./add_lrmat_hmatrix_product.hpp" #include "scale.hpp" namespace htool { diff --git a/include/htool/hmatrix/linalg/factorization.hpp b/include/htool/hmatrix/linalg/factorization.hpp index c76c3dc5..5feb76cd 100644 --- a/include/htool/hmatrix/linalg/factorization.hpp +++ b/include/htool/hmatrix/linalg/factorization.hpp @@ -3,7 +3,6 @@ #include "../../matrix/linalg/factorization.hpp" #include "add_hmatrix_hmatrix_product.hpp" -#include "rank_k_update.hpp" #include "triangular_hmatrix_hmatrix_solve.hpp" namespace htool { @@ -120,19 +119,19 @@ void cholesky_factorization(char UPLO, HMatrix *A_child = hmatrix.get_sub_hmatrix(*output_cluster_child, *input_cluster_child); const HMatrix *L = hmatrix.get_sub_hmatrix(*output_cluster_child, *cluster_child); - if (*output_cluster_child == *input_cluster_child) { - symmetric_rank_k_update(UPLO, 'N', CoefficientPrecision(-1), *L, CoefficientPrecision(1), *A_child); - } else { - add_hmatrix_hmatrix_product('N', 'C', CoefficientPrecision(-1), *L, *L, CoefficientPrecision(1), *A_child); - } + // if (*output_cluster_child == *input_cluster_child) { + // symmetric_rank_k_update(UPLO, 'N', CoefficientPrecision(-1), *L, CoefficientPrecision(1), *A_child); + // } else { + add_hmatrix_hmatrix_product('N', 'C', CoefficientPrecision(-1), *L, *L, CoefficientPrecision(1), *A_child); + // } } else if (UPLO == 'U' && output_cluster_child->get_offset() > cluster_child->get_offset() && input_cluster_child->get_offset() > cluster_child->get_offset() && input_cluster_child->get_offset() >= output_cluster_child->get_offset()) { HMatrix *A_child = hmatrix.get_sub_hmatrix(*output_cluster_child, *input_cluster_child); const HMatrix *U = hmatrix.get_sub_hmatrix(*cluster_child, *input_cluster_child); - if (*output_cluster_child == *input_cluster_child) { - symmetric_rank_k_update(UPLO, 'C', CoefficientPrecision(-1), *U, CoefficientPrecision(1), *A_child); - } else { - add_hmatrix_hmatrix_product('C', 'N', CoefficientPrecision(-1), *U, *U, CoefficientPrecision(1), *A_child); - } + // if (*output_cluster_child == *input_cluster_child) { + // symmetric_rank_k_update(UPLO, 'C', CoefficientPrecision(-1), *U, CoefficientPrecision(1), *A_child); + // } else { + add_hmatrix_hmatrix_product('C', 'N', CoefficientPrecision(-1), *U, *U, CoefficientPrecision(1), *A_child); + // } } } } diff --git a/include/htool/hmatrix/linalg/triangular_hmatrix_hmatrix_solve.hpp b/include/htool/hmatrix/linalg/triangular_hmatrix_hmatrix_solve.hpp index 6283615f..3ceb1e6d 100644 --- a/include/htool/hmatrix/linalg/triangular_hmatrix_hmatrix_solve.hpp +++ b/include/htool/hmatrix/linalg/triangular_hmatrix_hmatrix_solve.hpp @@ -3,6 +3,7 @@ #include "../../matrix/linalg/factorization.hpp" #include "../hmatrix.hpp" +#include "./triangular_hmatrix_lrmat_solve.hpp" namespace htool { template diff --git a/include/htool/hmatrix/linalg/triangular_hmatrix_matrix_solve.hpp b/include/htool/hmatrix/linalg/triangular_hmatrix_matrix_solve.hpp index 90dd8a12..645a6499 100644 --- a/include/htool/hmatrix/linalg/triangular_hmatrix_matrix_solve.hpp +++ b/include/htool/hmatrix/linalg/triangular_hmatrix_matrix_solve.hpp @@ -3,6 +3,7 @@ #include "../../matrix/linalg/factorization.hpp" #include "../hmatrix.hpp" +#include "./add_hmatrix_matrix_product_row_major.hpp" // ------------------------------------------------------------------- // --- Reversed iterable diff --git a/include/htool/hmatrix/tree_builder/tree_builder.hpp b/include/htool/hmatrix/tree_builder/tree_builder.hpp index 4d50a87b..d236f289 100644 --- a/include/htool/hmatrix/tree_builder/tree_builder.hpp +++ b/include/htool/hmatrix/tree_builder/tree_builder.hpp @@ -229,7 +229,7 @@ bool HMatrixTreeBuilder::build_block_ } // All sons are non admissible and not pushed to tasks -> the current block is not pushed - if ((block_size <= m_maxblocksize) + if (false && (block_size <= m_maxblocksize) && std::all_of(Blocks_not_pushed.begin(), Blocks_not_pushed.end(), [](bool i) { return i; }) && is_target_cluster_in_target_partition(target_cluster) && target_cluster.get_depth() >= m_mintargetdepth @@ -264,7 +264,7 @@ bool HMatrixTreeBuilder::build_block_ } } - if ((block_size <= m_maxblocksize) + if (false && (block_size <= m_maxblocksize) && std::all_of(Blocks_not_pushed.begin(), Blocks_not_pushed.end(), [](bool i) { return i; }) && is_target_cluster_in_target_partition(target_cluster) && target_cluster.get_depth() >= m_mintargetdepth @@ -296,7 +296,7 @@ bool HMatrixTreeBuilder::build_block_ Blocks_not_pushed.push_back(build_block_tree(child_blocks.back())); } } - if ((block_size <= m_maxblocksize) + if (false && (block_size <= m_maxblocksize) && std::all_of(Blocks_not_pushed.begin(), Blocks_not_pushed.end(), [](bool i) { return i; }) && is_target_cluster_in_target_partition(target_cluster) && target_cluster.get_depth() >= m_mintargetdepth @@ -327,7 +327,7 @@ bool HMatrixTreeBuilder::build_block_ Blocks_not_pushed.push_back(build_block_tree(child_blocks.back())); } } - if ((block_size <= m_maxblocksize) + if (false && (block_size <= m_maxblocksize) && std::all_of(Blocks_not_pushed.begin(), Blocks_not_pushed.end(), [](bool i) { return i; }) && is_target_cluster_in_target_partition(target_cluster) && target_cluster.get_depth() >= m_mintargetdepth @@ -360,7 +360,7 @@ bool HMatrixTreeBuilder::build_block_ } } } - if ((block_size <= m_maxblocksize) + if (false && (block_size <= m_maxblocksize) && std::all_of(Blocks_not_pushed.begin(), Blocks_not_pushed.end(), [](bool i) { return i; }) && is_target_cluster_in_target_partition(target_cluster) && target_cluster.get_depth() >= m_mintargetdepth