From a433a7eb8a6510f3cc4feeca666c085094ba441b Mon Sep 17 00:00:00 2001 From: Dongryeol Lee Date: Thu, 5 Aug 2010 20:46:15 +0000 Subject: [PATCH] Adding the test driver for multigrid. --- fastlib/trunk/contrib/dongryel/CMakeLists.txt | 1 + .../contrib/dongryel/multigrid/multigrid.h | 2 +- .../dongryel/multigrid/multigrid_dev.h | 6 ++++- .../dongryel/multigrid/multigrid_level.h | 10 ++++--- .../dongryel/multigrid/multigrid_test.cc | 27 +++++++++++++++++++ 5 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 fastlib/trunk/contrib/dongryel/multigrid/multigrid_test.cc diff --git a/fastlib/trunk/contrib/dongryel/CMakeLists.txt b/fastlib/trunk/contrib/dongryel/CMakeLists.txt index dc0ed53255..7a8e5ee49e 100644 --- a/fastlib/trunk/contrib/dongryel/CMakeLists.txt +++ b/fastlib/trunk/contrib/dongryel/CMakeLists.txt @@ -10,6 +10,7 @@ set(DIRS linear_regression # lprcde ## does not compile (missing NWRCdeProblem<>::MultiTreeQuerySummary::PostAccumulate) # matrix_factorized_fmm ## does not compile right + multigrid multitree_template ## requires memory manager (mmapmm) # nested_summation_template # pca diff --git a/fastlib/trunk/contrib/dongryel/multigrid/multigrid.h b/fastlib/trunk/contrib/dongryel/multigrid/multigrid.h index 4a77a26880..f495debb58 100644 --- a/fastlib/trunk/contrib/dongryel/multigrid/multigrid.h +++ b/fastlib/trunk/contrib/dongryel/multigrid/multigrid.h @@ -47,7 +47,7 @@ class Multigrid { VectorType &right_hand_side_in, int max_num_iterations_in); - void Compute(VectorType *output); + void Compute(Vector *output); }; }; }; diff --git a/fastlib/trunk/contrib/dongryel/multigrid/multigrid_dev.h b/fastlib/trunk/contrib/dongryel/multigrid/multigrid_dev.h index b3662d2910..f45c2d6883 100644 --- a/fastlib/trunk/contrib/dongryel/multigrid/multigrid_dev.h +++ b/fastlib/trunk/contrib/dongryel/multigrid/multigrid_dev.h @@ -59,12 +59,16 @@ void Multigrid::Coarsen_( } // Add to the coarse set if the following condition is satisfied. - if (sum_affinities < threshold * sum_all_affinities) { + if (sum_coarse_affinities < threshold * sum_all_affinities) { coarse_point_indices.push_back( std::pair(fine_point_index, fine_point_label)); } } // end of looping over all fine nodes. + // Sort the coarse point indices. + std::sort(coarse_point_indices.begin(), coarse_point_indices.end()); + + // Build the interpolation matrix. } template diff --git a/fastlib/trunk/contrib/dongryel/multigrid/multigrid_level.h b/fastlib/trunk/contrib/dongryel/multigrid/multigrid_level.h index 5d2434ffee..f1d4c47839 100644 --- a/fastlib/trunk/contrib/dongryel/multigrid/multigrid_level.h +++ b/fastlib/trunk/contrib/dongryel/multigrid/multigrid_level.h @@ -23,7 +23,7 @@ class MultigridLevel { /** @brief The coarser left hand side created by the * coarsening procedure. */ - SparseMatrix left_hand_side_; + Matrix left_hand_side_; /** @brief The coarser right hand sides created by the * coarsening procedure. @@ -36,6 +36,10 @@ class MultigridLevel { public: + double get(int row, int col) const { + return left_hand_side_.get(row, col); + } + const std::vector &point_indices() const { return point_indices_; } @@ -44,11 +48,11 @@ class MultigridLevel { return point_indices_; } - const SparseMatrix &left_hand_side() const { + const Matrix &left_hand_side() const { return left_hand_side_; } - SparseMatrix &left_hand_side() { + Matrix &left_hand_side() { return left_hand_side_; } diff --git a/fastlib/trunk/contrib/dongryel/multigrid/multigrid_test.cc b/fastlib/trunk/contrib/dongryel/multigrid/multigrid_test.cc new file mode 100644 index 0000000000..7025349d3a --- /dev/null +++ b/fastlib/trunk/contrib/dongryel/multigrid/multigrid_test.cc @@ -0,0 +1,27 @@ +/** @file multigrid_test.cc + * + * @brief The test driver for the multigrid solver. + * + * @author Dongryeol Lee (dongryel@cc.gatech.edu) + */ + +#include +#include "multigrid_dev.h" + +namespace multigrid_test { + +class MultigridTest { + public: + + void Start() { + fl::ml::Multigrid multigrid; + } +}; +}; + +int main(int argc, char *argv[]) { + printf("Starting multigrid tests.\n"); + multigrid_test::MultigridTest test; + test.Start(); + printf("All tests passed!"); +}