Skylark (Sketching Library)  0.1
/var/lib/jenkins/jobs/Skylark/workspace/algorithms/regression/accelerated_linearl2_regression_solver.hpp
Go to the documentation of this file.
00001 #ifndef SKYLARK_ACCELERATED_LINEARL2_REGRESSION_SOLVER_HPP
00002 #define SKYLARK_ACCELERATED_LINEARL2_REGRESSION_SOLVER_HPP
00003 
00004 #include "accelerated_regression_solver.hpp"
00005 
00006 namespace skylark {
00007 namespace algorithms {
00008 
00009 //****** Tags for how to build the preconditioner (QR or SVD)
00010 struct precond_alg_tag { };
00011 
00012 struct qr_precond_tag : precond_alg_tag { };
00013 
00014 struct svd_precond_tag : precond_alg_tag { };
00015 
00016 //****** Tags for algorithm for fast linear L2 regresssion.
00017 struct linearl2_reg_fast_alg_tag { };
00018 
00019 // Simplified Blendenpik just does a single sketch and uses the
00020 // sketched matrix as a preconditioner.
00021 template<template <typename, typename> class TransformType, 
00022          typename PrecondTag = qr_precond_tag>
00023 struct simplified_blendenpik_tag : public linearl2_reg_fast_alg_tag { };
00024 
00025 // The algorithm described in the Blendenpik paper
00026 template<typename PrecondTag = qr_precond_tag>
00027 struct blendenpik_tag : public linearl2_reg_fast_alg_tag { };
00028 
00029 // The algorithm described in the LSRN paper
00030 template<typename PrecondTag = svd_precond_tag>
00031 struct lsrn_tag : public linearl2_reg_fast_alg_tag { };
00032 
00033 } }
00034 
00035 #if SKYLARK_HAVE_ELEMENTAL
00036 #include "accelerated_linearl2_regression_solver_Elemental.hpp"
00037 #endif
00038 
00039 #endif // SKYLARK_ACCELERATED_LINEARL2_REGRESSION_SOLVER_HPP