diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/CMake/FindTrilinos.cmake b/fastlib/trunk/contrib/dongryel/thesis_research/CMake/FindTrilinos.cmake index b8a2142a8f..5efb946651 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/CMake/FindTrilinos.cmake +++ b/fastlib/trunk/contrib/dongryel/thesis_research/CMake/FindTrilinos.cmake @@ -4,8 +4,7 @@ # It sets TRILINOS_INCLUDE_DIR and TRILINOS_LIBS and also finds MPI_INCLUDE_DIR ## Location of trilinos -set(TRILINOS_LIB_DIR /usr/local/lib CACHE PATH - "Directory where trilinos is installed.") +set(TRILINOS_LIB_DIR $ENV{HOME}/local/trilinos-10.6.2/lib) ## library if(NOT "${TRILINOS_REQUIRED_LIBS}") # some defaults @@ -35,17 +34,16 @@ foreach(lib ${TRILINOS_REQUIRED_LIBS}) endforeach() ## include dirs +message(STATUS "Finding ${TRILINOS_LIB_DIR}/../include") find_path(TRILINOS_INCLUDE_DIR Trilinos_version.h PATHS - ${TRILINOS_LIB_DIR}/../include - /opt/trilinos/include - PATH_SUFFIXES - trilinos + ${TRILINOS_LIB_DIR}/../include + CMAKE_FIND_ROOT_PATH_BOTH ) if(TRILINOS_INCLUDE_DIR AND TRILINOS_LIBS) set(TRILINOS_FOUND "YES") - message(STATUS "Found trilinos libraries.") + message(STATUS "Found trilinos libraries in ${TRILINOS_LIBS}.") message(STATUS "Found trilinos headers in ${TRILINOS_INCLUDE_DIR}") else() message(FATAL_ERROR "Couldn't find trilinos.") @@ -55,9 +53,7 @@ mark_as_advanced(TRILINOS_INCLUDE_DIR trilinos_lib) find_path(MPI_INCLUDE_DIR mpi.h PATHS $ENV{HOME}/local/openmpi-1.4.3/include - PATH_SUFFIXES - mpi - openmpi + CMAKE_FIND_ROOT_PATH_BOTH ) if(MPI_INCLUDE_DIR) set(MPI_FOUND "YES") diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/CMakeLists.txt b/fastlib/trunk/contrib/dongryel/thesis_research/CMakeLists.txt index 96545224a7..b3ccb29c95 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/CMakeLists.txt +++ b/fastlib/trunk/contrib/dongryel/thesis_research/CMakeLists.txt @@ -9,7 +9,7 @@ project(FASTLIB C CXX Fortran) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake") # find LAPACK -find_package(LAPACK REQUIRED) # LAPACK finds BLAS as a dependency +# find_package(LAPACK REQUIRED) # LAPACK finds BLAS as a dependency # find pthreads find_package(Pthreads REQUIRED) diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/CMakeLists.txt b/fastlib/trunk/contrib/dongryel/thesis_research/core/CMakeLists.txt index c5a834e4a9..8caee8c67c 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/CMakeLists.txt +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/CMakeLists.txt @@ -16,9 +16,6 @@ add_subdirectory(util) add_library(core ${CORE_SRCS}) target_link_libraries(core - armadillo - lapack - blas gsl gslcblas pthread diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/util/timer.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/util/timer.h index a1f48a7fc7..98592b4293 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/util/timer.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/util/timer.h @@ -52,7 +52,7 @@ class Timer { double GetElapsedTime(int checkpoint_id) { timeval result; timersub(&checkpoints_[checkpoint_id], &start_, &result); - return (result.tv_sec + static_cast(result.tv_usec) / 1000000.0); + return (result.tv_sec + (double)(result.tv_usec) / 1000000.0); } private: diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/CMakeLists.txt b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/CMakeLists.txt index 72af906e3a..b3e58171c6 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/CMakeLists.txt +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 2.8) project(FASTLIB C CXX Fortran) -add_subdirectory(kde) add_subdirectory(distributed_kde) +add_subdirectory(kde) add_subdirectory(mixed_logit_dcm) +add_subdirectory(series_expansion) diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_dev.h b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_dev.h index de12df5c37..8fe3640e3e 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_dev.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_dev.h @@ -20,7 +20,6 @@ double MixedLogitDCM::SimulationError_( // Assumption: num_active_people in both samples are equal. double simulation_error = 0; - // Lastly divide by squared of the number of active people. simulation_error /= core::math::Sqr(static_cast(first_sample.num_active_people())); diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/CMakeLists.txt b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/CMakeLists.txt new file mode 100644 index 0000000000..40603b9dce --- /dev/null +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 2.8) + +# test executable +add_executable(series_expansion-test + EXCLUDE_FROM_ALL + series_expansion.test.cc + ) +# link dependencies of test executable +target_link_libraries(series_expansion-test + core + ${Boost_LIBRARIES} + ) diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion_aux.h b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_expansion_global.h similarity index 83% rename from fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion_aux.h rename to fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_expansion_global.h index 79c413a72a..26aacc5980 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion_aux.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_expansion_global.h @@ -1,15 +1,24 @@ -/** @file series_expansion_aux.h +/** @file cartesian_expansion_global.h + * + * @author Dongryeol Lee (dongryel@cc.gatech.edu) */ -#ifndef SERIES_EXPANSION_AUX -#define SERIES_EXPANSION_AUX +#ifndef MLPACK_SERIES_EXPANSION_SERIES_EXPANSION_GLOBAL_H +#define MLPACK_SERIES_EXPANSION_SERIES_EXPANSION_GLOBAL_H -#include "fastlib/fastlib.h" +#include "core/table/dense_matrix.h" +#include "core/table/dense_point.h" +#include "mlpack/series_expansion/cartesian_expansion_type.h" -/** - * Series expansion class. +namespace mlpack { +namespace series_expansion { + +/** @brief The set of global mappings and constants necessary for + * performing a Cartesian series expansion of a pairwise + * kernel. */ -class SeriesExpansionAux { +template +class CartesianExpansionGlobal { private: @@ -17,15 +26,15 @@ class SeriesExpansionAux { int max_order_; - Vector factorials_; + core::table::DensePoint factorials_; ArrayList list_total_num_coeffs_; - Vector inv_multiindex_factorials_; + core::table::DensePoint inv_multiindex_factorials_; - Vector neg_inv_multiindex_factorials_; + core::table::DensePoint neg_inv_multiindex_factorials_; - Matrix multiindex_combination_; + core::table::DenseMatrix multiindex_combination_; ArrayList< ArrayList > multiindex_mapping_; @@ -44,21 +53,7 @@ class SeriesExpansionAux { ArrayList< ArrayList > upper_mapping_index_; /** row index is for n, column index is for k */ - Matrix n_choose_k_; - - OT_DEF_BASIC(SeriesExpansionAux) { - OT_MY_OBJECT(dim_); - OT_MY_OBJECT(max_order_); - OT_MY_OBJECT(factorials_); - OT_MY_OBJECT(list_total_num_coeffs_); - OT_MY_OBJECT(inv_multiindex_factorials_); - OT_MY_OBJECT(neg_inv_multiindex_factorials_); - OT_MY_OBJECT(multiindex_combination_); - OT_MY_OBJECT(multiindex_mapping_); - OT_MY_OBJECT(lower_mapping_index_); - OT_MY_OBJECT(upper_mapping_index_); - OT_MY_OBJECT(n_choose_k_); - } + core::table::DenseMatrix n_choose_k_; public: @@ -169,7 +164,6 @@ class SeriesExpansionAux { } // end of i-loop } - // getters and setters double factorial(int k) const { return factorials_[k]; } @@ -182,7 +176,7 @@ class SeriesExpansionAux { int get_max_total_num_coeffs() const; - const Vector& get_inv_multiindex_factorials() const; + const core::table::DensePoint& get_inv_multiindex_factorials() const; const ArrayList< short int > * get_lower_mapping_index() const; @@ -192,7 +186,7 @@ class SeriesExpansionAux { const ArrayList< short int > * get_multiindex_mapping() const; - const Vector& get_neg_inv_multiindex_factorials() const; + const core::table::DensePoint& get_neg_inv_multiindex_factorials() const; double get_n_choose_k(int n, int k) const; @@ -231,8 +225,9 @@ class SeriesExpansionAux { /** * Print useful information about this object */ - void PrintDebug(const char *name = "", FILE *stream = stderr) const; - + void Print(const char *name = "", FILE *stream = stderr) const; }; +} +} #endif diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion_aux.cc b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_expansion_global_dev.h similarity index 94% rename from fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion_aux.cc rename to fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_expansion_global_dev.h index bc5caa6c27..649fcde54e 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion_aux.cc +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_expansion_global_dev.h @@ -1,4 +1,15 @@ -#include "series_expansion_aux.h" +/** @file cartesian_expansion_global.h + * + * @author Dongryeol Lee (dongryel@cc.gatech.edu) + */ + +#ifndef MLPACK_SERIES_EXPANSION_SERIES_EXPANSION_GLOBAL_DEV_H +#define MLPACK_SERIES_EXPANSION_SERIES_EXPANSION_GLOBAL_DEV_H + +#include "mlpack/series_expansion/cartesian_expansion_global.h" + +namespace mlpack { +namespace series_expansion { const Vector& SeriesExpansionAux::get_inv_multiindex_factorials() const { return inv_multiindex_factorials_; @@ -188,3 +199,7 @@ void SeriesExpansionAux::PrintDebug(const char *name, FILE *stream) const { } fprintf(stream, "\n"); } +} +} + +#endif diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_farfield.h b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_farfield.h index b89ad80edb..af4c28eb78 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_farfield.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_farfield.h @@ -182,10 +182,10 @@ class CartesianFarField { * expansion for any query point within the specified region * for a given bound. */ - template + template int OrderForEvaluating( - const TBound &far_field_region, - const TBound &local_field_region, + const BoundType &far_field_region, + const BoundType &local_field_region, double min_dist_sqd_regions, double max_dist_sqd_regions, double max_error, double *actual_error) const; @@ -199,10 +199,10 @@ class CartesianFarField { * @return the minimum approximation order required for the error, * -1 if approximation up to the maximum order is not possible. */ - template + template int OrderForConvertingToLocal( - const TBound &far_field_region, - const TBound &local_field_region, + const BoundType &far_field_region, + const BoundType &local_field_region, double min_dist_sqd_regions, double max_dist_sqd_regions, double required_bound, @@ -222,7 +222,7 @@ class CartesianFarField { * coefficients are added up to the passed-in local * expansion coefficients. */ - void TranslateToLocal(LocalExpansion &se, int truncation_order); + void TranslateToLocal(int truncation_order, LocalExpansion *se); }; } } diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_farfield_dev.h b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_farfield_dev.h index 2637d383c9..4943dd6066 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_farfield_dev.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/cartesian_farfield_dev.h @@ -10,12 +10,14 @@ #ifndef MLPACK_SERIES_EXPANSION_CARTESIAN_FARFIELD_DEV_H #define MLPACK_SERIES_EXPANSION_CARTESIAN_FARFIELD_DEV_H +#include "mlpack/series_expansion/cartesian_expansion_global.h" #include "mlpack/series_expansion/cartesian_farfield.h" namespace mlpack { namespace series_expansion { -template -void CartesianFarField::Accumulate( + +void CartesianFarField::Accumulate( + const CartesianExpansionGlobal &sea, const core::table::DensePoint &v, double weight, int order) { int dim = v.length(); @@ -87,7 +89,7 @@ void CartesianFarField::Accumulate( } template -void CartesianFarField::AccumulateCoeffs( +void CartesianFarField::AccumulateCoeffs( const core::table::DenseMatrix& data, const core::table::DensePoint& weights, int begin, int end, int order) { @@ -166,7 +168,7 @@ void CartesianFarField::AccumulateCoeffs( } template -void CartesianFarField::RefineCoeffs( +void CartesianFarField::RefineCoeffs( const core::table::DenseMatrix& data, const core::table::DensePoint& weights, int begin, int end, int order) { @@ -243,13 +245,13 @@ void CartesianFarField::RefineCoeffs( } template -double CartesianFarField::EvaluateField( +double CartesianFarField::EvaluateField( const core::table::DenseMatrix& data, int row_num, int order) const { return EvaluateField(data.GetColumnPtr(row_num), order); } template -double CartesianFarField::EvaluateField( +double CartesianFarField::EvaluateField( const double *x_q, int order) const { // dimension @@ -305,8 +307,8 @@ double CartesianFarField::EvaluateField( } template -void CartesianFarField::Init(const core::table::DensePoint& center, - const TKernelAux &ka) { +void CartesianFarField::Init(const core::table::DensePoint& center, + const TKernelAux &ka) { // copy kernel type, center, and bandwidth squared kernel_ = &(ka.kernel_); @@ -321,7 +323,7 @@ void CartesianFarField::Init(const core::table::DensePoint& center, } template -void CartesianFarField::Init(const TKernelAux &ka) { +void CartesianFarField::Init(const TKernelAux &ka) { // copy kernel type, center, and bandwidth squared kernel_ = &(ka.kernel_); @@ -338,7 +340,7 @@ void CartesianFarField::Init(const TKernelAux &ka) { template template -int CartesianFarField::OrderForEvaluating +int CartesianFarField::OrderForEvaluating (const TBound &far_field_region, const TBound &local_field_region, double min_dist_sqd_regions, double max_dist_sqd_regions, double max_error, double *actual_error) const { @@ -352,7 +354,7 @@ int CartesianFarField::OrderForEvaluating template template -int CartesianFarField:: +int CartesianFarField:: OrderForConvertingToLocal(const TBound &far_field_region, const TBound &local_field_region, double min_dist_sqd_regions, @@ -368,7 +370,7 @@ OrderForConvertingToLocal(const TBound &far_field_region, } template -void CartesianFarField::Print( +void CartesianFarField::Print( const char *name, FILE *stream) const { int dim = sea_->get_dimension(); @@ -417,7 +419,7 @@ void CartesianFarField::Print( } template -void CartesianFarField::TranslateFromFarField( +void CartesianFarField::TranslateFromFarField( const CartesianFarField &se) { double bandwidth_factor = ka_->BandwidthFactor(se.bandwidth_sq()); @@ -509,8 +511,8 @@ void CartesianFarField::TranslateFromFarField( } template -void CartesianFarField::TranslateToLocal( - CartesianLocal &se, int truncation_order) { +void CartesianFarField::TranslateToLocal( + CartesianLocal &se, int truncation_order) { core::table::DensePoint pos_arrtmp, neg_arrtmp; core::table::DenseMatrix derivative_map; diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion_test.cc b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion.test.cc similarity index 100% rename from fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion_test.cc rename to fastlib/trunk/contrib/dongryel/thesis_research/mlpack/series_expansion/series_expansion.test.cc