diff --git a/fastlib2/mlpack/range_search/build.py b/fastlib2/mlpack/range_search/build.py index f2ee79dc48..1d13ae90ba 100644 --- a/fastlib2/mlpack/range_search/build.py +++ b/fastlib2/mlpack/range_search/build.py @@ -5,7 +5,9 @@ librule( headers = ["data_aux.h", "naive_ortho_range_search.h", "ortho_range_search.h"], - deplibs = ["fastlib:fastlib_int"] + deplibs = ["fastlib:fastlib_int", + "contrib/dongryel/proximity_project:proximity_project", + "fastlib/mmanager:mmapmm"] ) binrule( diff --git a/fastlib2/mlpack/range_search/data_aux.h b/fastlib2/mlpack/range_search/data_aux.h index 496c4ca0f6..1fd41957ca 100644 --- a/fastlib2/mlpack/range_search/data_aux.h +++ b/fastlib2/mlpack/range_search/data_aux.h @@ -26,7 +26,7 @@ namespace data_aux { // Allocate the matrix that is to be returned and copy all // entries. - matrix->Init(tmp_matrix.n_rows(), tmp_matrix.n_cols()); + matrix->StaticInit(tmp_matrix.n_rows(), tmp_matrix.n_cols()); for(index_t c = 0; c < tmp_matrix.n_cols(); c++) { for(index_t r = 0; r < tmp_matrix.n_rows(); r++) { matrix->set(r, c, STATIC_CAST(T, tmp_matrix.get(r, c))); @@ -57,7 +57,7 @@ namespace data_aux { // Allocate the matrix that is to be returned and copy all // entries. - matrix->Init(tmp_matrix.n_cols(), tmp_matrix.n_rows()); + matrix->StaticInit(tmp_matrix.n_cols(), tmp_matrix.n_rows()); for(index_t c = 0; c < tmp_matrix.n_cols(); c++) { for(index_t r = 0; r < tmp_matrix.n_rows(); r++) { matrix->set(c, r, STATIC_CAST(T, tmp_matrix.get(r, c))); diff --git a/fastlib2/mlpack/range_search/naive_ortho_range_search.h b/fastlib2/mlpack/range_search/naive_ortho_range_search.h index 48b629a7c9..8d97d77e84 100644 --- a/fastlib2/mlpack/range_search/naive_ortho_range_search.h +++ b/fastlib2/mlpack/range_search/naive_ortho_range_search.h @@ -78,7 +78,7 @@ class NaiveOrthoRangeSearch { void Init(const GenMatrix &data) { // copy the incoming data - data_.Copy(data); + data_.StaticCopy(data); // re-initialize boolean flag in_range_.Init(data_.n_cols()); diff --git a/fastlib2/mlpack/range_search/ortho_range_search.h b/fastlib2/mlpack/range_search/ortho_range_search.h index efa5a26e36..a8646b0c48 100644 --- a/fastlib2/mlpack/range_search/ortho_range_search.h +++ b/fastlib2/mlpack/range_search/ortho_range_search.h @@ -9,7 +9,7 @@ #define ORTHO_RANGE_SEARCH_H #include "fastlib/fastlib.h" - +#include "contrib/dongryel/proximity_project/general_type_bounds.h" /** @brief Faster orthogonal range search class using a tree. * @@ -158,10 +158,10 @@ class OrthoRangeSearch { // decide whether to make a copy or not. if(make_copy) { - data_.Copy(dataset); + data_.StaticCopy(dataset); } else { - data_.Own(&dataset); + data_.StaticOwn(&dataset); } fx_timer_start(NULL, "tree_d"); @@ -270,8 +270,7 @@ class OrthoRangeSearch { tmp_data.MakeColumnVector(new_from_old_[i], &dest); dest.CopyValues(source); } - data_.Destruct(); - data_.Own(&tmp_data); + data_.CopyValues(tmp_data); } /** @brief The base case. diff --git a/fastlib2/mlpack/range_search/ortho_range_search_main.cc b/fastlib2/mlpack/range_search/ortho_range_search_main.cc index c1ae76f28c..971aac7d25 100644 --- a/fastlib2/mlpack/range_search/ortho_range_search_main.cc +++ b/fastlib2/mlpack/range_search/ortho_range_search_main.cc @@ -8,6 +8,8 @@ #include "naive_ortho_range_search.h" #include "ortho_range_search.h" +#include "fastlib/mmanager/memory_manager.h" + /** Main function which reads parameters and runs the orthogonal * range search. * @@ -59,6 +61,14 @@ */ int main(int argc, char *argv[]) { + // Initialize Nick's memory manager... + std::string pool_name("/scratch/temp_mem"); + mmapmm::MemoryManager::allocator_ = + new mmapmm::MemoryManager(); + mmapmm::MemoryManager::allocator_->set_pool_name(pool_name); + mmapmm::MemoryManager::allocator_->set_capacity(65536*1000); + mmapmm::MemoryManager::allocator_->Init(); + // Always initialize FASTexec with main's inputs at the beggining of // your program. This reads the command line, among other things. fx_init(argc, argv); @@ -143,5 +153,9 @@ int main(int argc, char *argv[]) { ((double)(naive_search_time->total).micros) / ((double)(tree_range_search_time->total).micros)); fx_done(); + + // Destroy Nick's memory manager... + mmapmm::MemoryManager::allocator_->Destruct(); + delete mmapmm::MemoryManager::allocator_; return 0; }