From cbb461e622a88ea7ba4b803eea9e13fd59cb871a Mon Sep 17 00:00:00 2001 From: Dongryeol Lee Date: Fri, 19 Nov 2010 19:39:01 +0000 Subject: [PATCH] Fixed so that no virtualization is allowed inside the memory mapped file. --- .../core/gnp/dualtree_dfs_dev.h | 6 +- .../core/gnp/triple_distance_sq.h | 4 +- .../core/gnp/tripletree_dfs_dev.h | 16 +- .../core/metric_kernels/abstract_metric.h | 14 +- .../core/metric_kernels/lmetric.h | 20 +-- .../thesis_research/core/table/dense_matrix.h | 2 +- .../thesis_research/core/table/dense_point.h | 154 ++++++++---------- .../thesis_research/core/table/table.h | 16 +- .../core/tree/gen_metric_tree.h | 6 +- .../thesis_research/mlpack/kde/kde.test.cc | 4 +- .../thesis_research/mlpack/kde/kde_dualtree.h | 8 +- .../nbody_simulator/nbody_simulator.test.cc | 6 +- .../nbody_simulator_tripletree.h | 8 +- 13 files changed, 120 insertions(+), 144 deletions(-) diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/dualtree_dfs_dev.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/dualtree_dfs_dev.h index 192bceb769..feaa7d2f0c 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/dualtree_dfs_dev.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/dualtree_dfs_dev.h @@ -155,7 +155,7 @@ void core::gnp::DualtreeDfs::DualtreeBase_( while(qnode_iterator.HasNext()) { // Get the query point and its real index. - core::table::DenseConstPoint q_col; + core::table::DensePoint q_col; int q_index; qnode_iterator.Next(&q_col, &q_index); @@ -171,7 +171,7 @@ void core::gnp::DualtreeDfs::DualtreeBase_( while(rnode_iterator.HasNext()) { // Get the reference point and accumulate contribution. - core::table::DenseConstPoint r_col; + core::table::DensePoint r_col; int r_col_id; rnode_iterator.Next(&r_col, &r_col_id); query_contribution.ApplyContribution( @@ -504,7 +504,7 @@ void core::gnp::DualtreeDfs::PostProcess_( query_table_->get_node_iterator(qnode); while(qnode_iterator.HasNext()) { - core::table::DenseConstPoint q_col; + core::table::DensePoint q_col; int q_index; qnode_iterator.Next(&q_col, &q_index); query_results->ApplyPostponed(q_index, qnode_stat.postponed_); diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/triple_distance_sq.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/triple_distance_sq.h index 66885fa6c5..cc3419b8b6 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/triple_distance_sq.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/triple_distance_sq.h @@ -17,7 +17,7 @@ class TripleDistanceSq { private: arma::mat distance_sq_; - std::vector< core::table::DenseConstPoint > points_; + std::vector< core::table::DensePoint > points_; std::vector point_indices_; @@ -54,7 +54,7 @@ class TripleDistanceSq { void ReplaceOnePoint( const core::metric_kernels::AbstractMetric &metric_in, - const core::table::DenseConstPoint &new_point_in, + const core::table::DensePoint &new_point_in, int new_point_index_in, int point_pos_in) { diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/tripletree_dfs_dev.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/tripletree_dfs_dev.h index e703059bf3..aacf1894fa 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/tripletree_dfs_dev.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/gnp/tripletree_dfs_dev.h @@ -166,7 +166,7 @@ void core::gnp::TripletreeDfs::TripletreeBase_( table_->get_node_iterator(range_sq_in.node(0)); do { // Get the point in the first node. - core::table::DenseConstPoint first_point; + core::table::DensePoint first_point; int first_point_index; first_node_it.Next(&first_point, &first_point_index); distance_sq_set.ReplaceOnePoint(metric, first_point, first_point_index, 0); @@ -177,7 +177,7 @@ void core::gnp::TripletreeDfs::TripletreeBase_( while(second_node_it.HasNext()) { // Get the point in the second node. - core::table::DenseConstPoint second_point; + core::table::DensePoint second_point; int second_point_index; second_node_it.Next(&second_point, &second_point_index); distance_sq_set.ReplaceOnePoint( @@ -189,7 +189,7 @@ void core::gnp::TripletreeDfs::TripletreeBase_( while(third_node_it.HasNext()) { // Get thet point in the third node. - core::table::DenseConstPoint third_point; + core::table::DensePoint third_point; int third_point_index; third_node_it.Next(&third_point, &third_point_index); distance_sq_set.ReplaceOnePoint( @@ -238,7 +238,7 @@ void core::gnp::TripletreeDfs::TripletreeBase_( while(node_iterator.HasNext()) { // Get the query point and its real index. - core::table::DenseConstPoint q_col; + core::table::DensePoint q_col; int q_index; node_iterator.Next(&q_col, &q_index); @@ -277,7 +277,7 @@ bool core::gnp::TripletreeDfs::CanProbabilisticSummarize_( typename ProblemType::SummaryType new_summary; bool flag = true; - core::table::DenseConstPoint previous_query_point; + core::table::DensePoint previous_query_point; int previous_query_point_index = -1; for(int i = node_start_index; flag && i < 3; i++) { @@ -293,7 +293,7 @@ bool core::gnp::TripletreeDfs::CanProbabilisticSummarize_( // The query point index and the point. int query_point_index = -1; - core::table::DenseConstPoint query_point; + core::table::DensePoint query_point; // The new summary. new_summary = node_stat.summary_; @@ -317,7 +317,7 @@ bool core::gnp::TripletreeDfs::CanProbabilisticSummarize_( metric, problem_->global(), delta, range_in, failure_probabilities, i, query_results, query_point, qpoint_dfs_index, query_point_index, - (const core::table::DenseConstPoint *) NULL, + (const core::table::DensePoint *) NULL, (int *) NULL); } previous_query_point.Alias(query_point); @@ -685,7 +685,7 @@ void core::gnp::TripletreeDfs::PostProcess_( qnode_stat.summary_.StartReaccumulate(problem_->global()); while(qnode_iterator.HasNext()) { - core::table::DenseConstPoint q_col; + core::table::DensePoint q_col; int q_index; qnode_iterator.Next(&q_col, &q_index); query_results->ApplyPostponed(q_index, qnode_stat.postponed_); diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/metric_kernels/abstract_metric.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/metric_kernels/abstract_metric.h index 5b0d3c48c2..88b5c49804 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/metric_kernels/abstract_metric.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/metric_kernels/abstract_metric.h @@ -8,7 +8,7 @@ #ifndef CORE_METRIC_KERNELS_ABSTRACT_METRIC_H #define CORE_METRIC_KERNELS_ABSTRACT_METRIC_H -#include "core/table/abstract_point.h" +#include "core/table/dense_point.h" namespace core { namespace metric_kernels { @@ -23,12 +23,12 @@ class AbstractMetric { * Computes the distance metric between two points. */ virtual double Distance( - const core::table::AbstractPoint& a, - const core::table::AbstractPoint& b) const = 0; + const core::table::DensePoint& a, + const core::table::DensePoint& b) const = 0; virtual double DistanceIneq( - const core::table::AbstractPoint& a, - const core::table::AbstractPoint& b) const = 0; + const core::table::DensePoint& a, + const core::table::DensePoint& b) const = 0; /** * Computes the distance metric between two points, raised to a @@ -38,8 +38,8 @@ class AbstractMetric { * L2 distance. */ virtual double DistanceSq( - const core::table::AbstractPoint &a, - const core::table::AbstractPoint &b) const = 0; + const core::table::DensePoint &a, + const core::table::DensePoint &b) const = 0; }; }; }; diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/metric_kernels/lmetric.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/metric_kernels/lmetric.h index aa8dd7137a..cbd9469b7b 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/metric_kernels/lmetric.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/metric_kernels/lmetric.h @@ -20,8 +20,8 @@ class LMetricDistanceSqTrait { public: static double Compute( const core::metric_kernels::AbstractMetric &metric_in, - const core::table::AbstractPoint &a, - const core::table::AbstractPoint &b) { + const core::table::DensePoint &a, + const core::table::DensePoint &b) { return core::math::Pow<2, t_pow>(metric_in.DistanceIneq(a, b)); } @@ -32,8 +32,8 @@ class LMetricDistanceSqTrait<2> { public: static double Compute( const core::metric_kernels::AbstractMetric &metric_in, - const core::table::AbstractPoint &a, - const core::table::AbstractPoint &b) { + const core::table::DensePoint &a, + const core::table::DensePoint &b) { return metric_in.DistanceIneq(a, b); } @@ -53,14 +53,14 @@ class LMetric: public core::metric_kernels::AbstractMetric { * Computes the distance metric between two points. */ double Distance( - const core::table::AbstractPoint& a, - const core::table::AbstractPoint& b) const { + const core::table::DensePoint& a, + const core::table::DensePoint& b) const { return core::math::Pow<1, t_pow>(DistanceIneq(a, b)); } double DistanceIneq( - const core::table::AbstractPoint &a, - const core::table::AbstractPoint &b) const { + const core::table::DensePoint &a, + const core::table::DensePoint &b) const { double distance_ineq = 0; for(int i = 0; i < a.length(); i++) { @@ -77,8 +77,8 @@ class LMetric: public core::metric_kernels::AbstractMetric { * L2 distance. */ double DistanceSq( - const core::table::AbstractPoint &a, - const core::table::AbstractPoint &b) const { + const core::table::DensePoint &a, + const core::table::DensePoint &b) const { return core::metric_kernels::LMetricDistanceSqTrait::Compute( *this, a, b); diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/table/dense_matrix.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/table/dense_matrix.h index d03f268970..0dc5739c96 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/table/dense_matrix.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/table/dense_matrix.h @@ -109,7 +109,7 @@ class DenseMatrix { } void MakeColumnVector( - int i, core::table::DenseConstPoint *point_out) const { + int i, core::table::DensePoint *point_out) const { point_out->Alias( ptr_.get() + i * n_rows_, n_rows_); } diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/table/dense_point.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/table/dense_point.h index ccc0c8b8f2..1d2fc7ccc9 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/table/dense_point.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/table/dense_point.h @@ -9,8 +9,8 @@ #define CORE_TABLE_DENSE_POINT_H #include +#include #include -#include "abstract_point.h" #include "memory_mapped_file.h" namespace core { @@ -18,88 +18,44 @@ namespace table { extern core::table::MemoryMappedFile *global_m_file_; -class DenseConstPoint: public core::table::AbstractPoint { - protected: - - double *ptr_; - - int n_rows_; - - public: - - void Print() const { - printf("Vector of length: %d\n", n_rows_); - for(int i = 0; i < n_rows_; i++) { - printf("%g ", ptr_[i]); - } - printf("\n"); - } - - void Init(int length) { - - // Does not do anything - DenseConstPoint is only an alias. - } - - const double *ptr() const { - return ptr_; - } - - virtual ~DenseConstPoint() { - // A const point is always defined as an alias to a part of an - // already-existing memory block, so you do not free it. - Reset(); - } - - void Reset() { - ptr_ = NULL; - n_rows_ = 0; - } - - DenseConstPoint() { - Reset(); - } - - int length() const { - return n_rows_; - } - - double operator[](int i) const { - return ptr_[i]; - } - - void Alias(const double *ptr_in, int length_in) { - ptr_ = const_cast(ptr_in); - n_rows_ = length_in; - } - - void Alias(const DenseConstPoint &point_in) { - ptr_ = const_cast(point_in.ptr()); - n_rows_ = point_in.length(); - } -}; - -class DensePoint: public DenseConstPoint { +class DensePoint { private: friend class boost::serialization::access; + boost::interprocess::offset_ptr ptr_; + + int n_rows_; + bool is_alias_; private: void DestructPtr_() { - if(DenseConstPoint::ptr_ != NULL && is_alias_ == false) { + if(ptr_ != NULL && is_alias_ == false) { if(core::table::global_m_file_) { - core::table::global_m_file_->Deallocate(ptr_); + core::table::global_m_file_->Deallocate(ptr_.get()); } else { - delete[] DenseConstPoint::ptr_; + delete[] ptr_.get(); } } } public: + int length() const { + return n_rows_; + } + + const double *ptr() const { + return ptr_.get(); + } + + double *ptr() { + return ptr_.get(); + } + template void save(Archive &ar, const unsigned int version) const { @@ -129,7 +85,6 @@ class DensePoint: public DenseConstPoint { BOOST_SERIALIZATION_SPLIT_MEMBER() void Reset() { - DenseConstPoint::Reset(); is_alias_ = false; } @@ -137,50 +92,53 @@ class DensePoint: public DenseConstPoint { Reset(); } - virtual ~DensePoint() { + ~DensePoint() { DestructPtr_(); Reset(); } + const double operator[](int i) const { + return ptr_.get()[i]; + } + double &operator[](int i) { - return DenseConstPoint::ptr_[i]; + return ptr_.get()[i]; } void Init(int length_in) { - DenseConstPoint::ptr_ = + ptr_ = (core::table::global_m_file_) ? (double *) core::table::global_m_file_->Allocate(sizeof(double) * length_in) : new double[length_in]; - DenseConstPoint::n_rows_ = length_in; + n_rows_ = length_in; is_alias_ = false; } void Init(const std::vector &vector_in) { - DenseConstPoint::ptr_ = + ptr_ = (core::table::global_m_file_) ? (double *) core::table::global_m_file_->Allocate( sizeof(double) * vector_in.size()) : new double[vector_in.size()]; - DenseConstPoint::n_rows_ = vector_in.size(); + n_rows_ = vector_in.size(); for(unsigned int i = 0; i < vector_in.size(); i++) { ptr_[i] = vector_in[i]; } is_alias_ = false; } - void CopyValues(const DenseConstPoint &point_in) { + void CopyValues(const DensePoint &point_in) { memcpy( - DenseConstPoint::ptr_, point_in.ptr(), - sizeof(double) * point_in.length()); - DenseConstPoint::n_rows_ = point_in.length(); + ptr_.get(), point_in.ptr(), sizeof(double) * point_in.length()); + n_rows_ = point_in.length(); is_alias_ = false; } - void Copy(const DenseConstPoint &point_in) { + void Copy(const DensePoint &point_in) { DestructPtr_(); - DenseConstPoint::ptr_ = + ptr_ = (core::table::global_m_file_) ? (double *) core::table::global_m_file_->Allocate( sizeof(double) * point_in.length()) : @@ -189,39 +147,57 @@ class DensePoint: public DenseConstPoint { } void SetZero() { - memset(ptr_, 0, sizeof(double) * n_rows_); + memset(ptr_.get(), 0, sizeof(double) * n_rows_); } void Alias(double *ptr_in, int length_in) { - DenseConstPoint::ptr_ = ptr_in; - DenseConstPoint::n_rows_ = length_in; + ptr_ = ptr_in; + n_rows_ = length_in; is_alias_ = true; } + void Alias(const double *ptr_in, int length_in) { + ptr_ = const_cast(ptr_in); + n_rows_ = length_in; + } + + void Alias(const DensePoint &point_in) { + ptr_ = const_cast(point_in.ptr()); + n_rows_ = point_in.length(); + } + void Add( - double scale_factor, const core::table::DenseConstPoint &point_in) { + double scale_factor, const core::table::DensePoint &point_in) { for(int i = 0; i < point_in.length(); i++) { - ptr_[i] += scale_factor * point_in[i]; + ptr_.get()[i] += scale_factor * point_in[i]; } } - void operator+=(const core::table::DenseConstPoint &point_in) { + void operator+=(const core::table::DensePoint &point_in) { for(int i = 0; i < point_in.length(); i++) { - ptr_[i] += point_in[i]; + ptr_.get()[i] += point_in[i]; } } void operator/=(double scale_factor) { - for(int i = 0; i < DenseConstPoint::n_rows_; i++) { - ptr_[i] /= scale_factor; + for(int i = 0; i < n_rows_; i++) { + ptr_.get()[i] /= scale_factor; } } void operator*=(double scale_factor) { - for(int i = 0; i < DenseConstPoint::n_rows_; i++) { - ptr_[i] *= scale_factor; + for(int i = 0; i < n_rows_; i++) { + ptr_.get()[i] *= scale_factor; } } + + void Print() const { + printf("Vector of length: %d\n", n_rows_); + for(int i = 0; i < n_rows_; i++) { + printf("%g ", ptr_.get()[i]); + } + printf("\n"); + } }; }; }; diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/table/table.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/table/table.h index de822a6428..8153e06611 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/table/table.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/table/table.h @@ -85,13 +85,13 @@ class Table: public boost::noncopyable { current_index_++; } - void Next(core::table::DenseConstPoint *entry, int *point_id) { + void Next(core::table::DensePoint *entry, int *point_id) { current_index_++; table_->iterator_get_(current_index_, entry); *point_id = table_->iterator_get_id_(current_index_); } - void get(int i, core::table::DenseConstPoint *entry) { + void get(int i, core::table::DensePoint *entry) { table_->iterator_get_(begin_ + i, entry); } @@ -99,11 +99,11 @@ class Table: public boost::noncopyable { *point_id = table_->iterator_get_id_(begin_ + i); } - void RandomPick(core::table::DenseConstPoint *entry) { + void RandomPick(core::table::DensePoint *entry) { table_->iterator_get_(core::math::Random(begin_, end_), entry); } - void RandomPick(core::table::DenseConstPoint *entry, int *point_id) { + void RandomPick(core::table::DensePoint *entry, int *point_id) { *point_id = core::math::Random(begin_, end_); table_->iterator_get_(*point_id, entry); } @@ -235,7 +235,7 @@ class Table: public boost::noncopyable { void Save(const std::string &file_name) const { FILE *foutput = fopen(file_name.c_str(), "w+"); for(int j = 0; j < data_.n_cols(); j++) { - core::table::DenseConstPoint point; + core::table::DensePoint point; this->direct_get_(j, &point); for(int i = 0; i < data_.n_rows(); i++) { fprintf(foutput, "%g", point[i]); @@ -265,7 +265,7 @@ class Table: public boost::noncopyable { direct_get_(point_id, point_out); } - void get(int point_id, core::table::DenseConstPoint *point_out) const { + void get(int point_id, core::table::DensePoint *point_out) const { direct_get_(point_id, point_out); } @@ -315,7 +315,7 @@ class Table: public boost::noncopyable { } void direct_get_( - int point_id, core::table::DenseConstPoint *entry) const { + int point_id, core::table::DensePoint *entry) const { if(this->IsIndexed() == false) { data_.MakeColumnVector(point_id, entry); } @@ -334,7 +334,7 @@ class Table: public boost::noncopyable { } void iterator_get_( - int reordered_position, core::table::DenseConstPoint *entry) const { + int reordered_position, core::table::DensePoint *entry) const { data_.MakeColumnVector(reordered_position, entry); } diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/tree/gen_metric_tree.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/tree/gen_metric_tree.h index 9c171c65d7..8467f01d68 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/tree/gen_metric_tree.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/tree/gen_metric_tree.h @@ -36,7 +36,7 @@ class GenMetricTree { *furthest_distance = -1.0; for(int i = begin; i < end; i++) { - core::table::DenseConstPoint point; + core::table::DensePoint point; matrix.MakeColumnVector(i, &point); double distance_between_center_and_point = metric_in.Distance(pivot, point); @@ -67,7 +67,7 @@ class GenMetricTree { bounds->center().SetZero(); int end = begin + count; - core::table::DenseConstPoint col_point; + core::table::DensePoint col_point; for(int i = begin; i < end; i++) { matrix.MakeColumnVector(i, &col_point); bounds->center() += col_point; @@ -112,7 +112,7 @@ class GenMetricTree { for(int left = first; left < end; left++) { // Make alias of the current point. - core::table::DenseConstPoint point; + core::table::DensePoint point; matrix.MakeColumnVector(left, &point); // Compute the distances from the two pivots. diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/kde/kde.test.cc b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/kde/kde.test.cc index ede6b7b73f..0ec918886c 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/kde/kde.test.cc +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/kde/kde.test.cc @@ -75,12 +75,12 @@ class TestKde { ultra_naive_query_results.resize(query_table.n_entries()); for(int i = 0; i < query_table.n_entries(); i++) { - core::table::DenseConstPoint query_point; + core::table::DensePoint query_point; query_table.get(i, &query_point); ultra_naive_query_results[i] = 0; for(int j = 0; j < reference_table.n_entries(); j++) { - core::table::DenseConstPoint reference_point; + core::table::DensePoint reference_point; reference_table.get(j, &reference_point); // By default, monochromaticity is assumed in the test - diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/kde/kde_dualtree.h b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/kde/kde_dualtree.h index 93176b152c..3dd751ac63 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/kde/kde_dualtree.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/kde/kde_dualtree.h @@ -259,7 +259,7 @@ class KdeResult { // Get the iterator for the query node. typename GlobalType::TableType::TreeIterator qnode_it = global.query_table()->get_node_iterator(qnode); - core::table::DenseConstPoint qpoint; + core::table::DensePoint qpoint; int qpoint_index; // Look up the number of standard deviations. @@ -396,13 +396,13 @@ class KdeSummary { // Get the iterator for the query node. typename GlobalType::TableType::TreeIterator qnode_it = global.query_table()->get_node_iterator(qnode); - core::table::DenseConstPoint qpoint; + core::table::DensePoint qpoint; int qpoint_index; // Get the iterator for the reference node. typename GlobalType::TableType::TreeIterator rnode_it = global.reference_table()->get_node_iterator(rnode); - core::table::DenseConstPoint rpoint; + core::table::DensePoint rpoint; int rpoint_index; // Interval for the pivot query point. @@ -428,7 +428,7 @@ class KdeSummary { qnode_it.Next(&qpoint, &qpoint_index); bool skip = false; if(prev_qpoint_index >= 0) { - core::table::DenseConstPoint prev_qpoint; + core::table::DensePoint prev_qpoint; global.query_table()->get(prev_qpoint_index, &prev_qpoint); double dist = sqrt(metric.DistanceSq(qpoint, prev_qpoint)); if(dist <= movement_threshold && movement_count < 5) { diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/physpack/nbody_simulator/nbody_simulator.test.cc b/fastlib/trunk/contrib/dongryel/thesis_research/physpack/nbody_simulator/nbody_simulator.test.cc index a754f0c115..a86ff6aa97 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/physpack/nbody_simulator/nbody_simulator.test.cc +++ b/fastlib/trunk/contrib/dongryel/thesis_research/physpack/nbody_simulator/nbody_simulator.test.cc @@ -73,17 +73,17 @@ class TestNbodySimulator { // Loop over distinct 3-tuples. core::gnp::TripleDistanceSq triple_distance_sq; for(int i = 0; i < table.n_entries() - 2; i++) { - core::table::DenseConstPoint i_th_point; + core::table::DensePoint i_th_point; table.get(i, &i_th_point); triple_distance_sq.ReplaceOnePoint(metric_in, i_th_point, i, 0); for(int j = i + 1; j < table.n_entries() - 1; j++) { - core::table::DenseConstPoint j_th_point; + core::table::DensePoint j_th_point; table.get(j, &j_th_point); triple_distance_sq.ReplaceOnePoint(metric_in, j_th_point, j, 1); for(int k = j + 1; k < table.n_entries(); k++) { - core::table::DenseConstPoint k_th_point; + core::table::DensePoint k_th_point; table.get(k, &k_th_point); triple_distance_sq.ReplaceOnePoint(metric_in, k_th_point, k, 2); diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/physpack/nbody_simulator/nbody_simulator_tripletree.h b/fastlib/trunk/contrib/dongryel/thesis_research/physpack/nbody_simulator/nbody_simulator_tripletree.h index a807764640..450da11be2 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/physpack/nbody_simulator/nbody_simulator_tripletree.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/physpack/nbody_simulator/nbody_simulator_tripletree.h @@ -229,7 +229,7 @@ class NbodySimulatorResult { // Get the iterator for the node. typename GlobalType::TableType::TreeIterator node_it = global.table()->get_node_iterator(node); - core::table::DenseConstPoint qpoint; + core::table::DensePoint qpoint; int qpoint_index; // Look up the number of standard deviations. @@ -418,7 +418,7 @@ class NbodySimulatorSummary { int node_index_fix, core::gnp::TripleDistanceSq *distance_sq_out) const { - core::table::DenseConstPoint point; + core::table::DensePoint point; for(int i = 1; i < 3; i++) { int index = (node_index_fix + i) % 3; table.get(random_combination[index], &point); @@ -553,10 +553,10 @@ class NbodySimulatorSummary { const std::vector &failure_probabilities, int node_index, ResultType *query_results, - const core::table::DenseConstPoint &query_point, + const core::table::DensePoint &query_point, int qpoint_dfs_index, int query_point_index, - const core::table::DenseConstPoint *previous_query_point, + const core::table::DensePoint *previous_query_point, int *previous_query_point_index) { // Sampled result for the current query point.