Commit e28ff234 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Removed explicit template instances of GMRES and SOR

They are disabled and never really worked for these objects...
parent 7a406d54
Loading
Loading
Loading
Loading
+0 −23
Original line number Diff line number Diff line
@@ -22,26 +22,3 @@ SET( headers BICGStab.h
   )

INSTALL( FILES ${headers} DESTINATION ${TNL_TARGET_INCLUDE_DIRECTORY}/Solvers/Linear )

if( ${WITH_TEMPLATES_INSTANTIATION} )
   SET( CURRENT_DIR ${CMAKE_SOURCE_DIR}/src/TNL/Solvers/Linear )

   set( common_SOURCES ${CURRENT_DIR}/GMRES_impl.cpp
                       ${CURRENT_DIR}/SOR_impl.cpp )

   set( tnl_solvers_linear_SOURCES
        ${tnl_solvers_linear_krylov_SOURCES}
        ${tnl_solvers_linear_preconditioners_SOURCES}
        ${tnl_solvers_linear_stationary_SOURCES}
        ${common_SOURCES}
        PARENT_SCOPE )

   if( BUILD_CUDA)
      set( tnl_solvers_linear_CUDA__SOURCES
           ${tnl_solvers_linear_krylov_CUDA__SOURCES}
           ${tnl_solvers_linear_preconditioners_CUDA_SOURCES}
           ${tnl_solvers_linear_stationary_CUDA__SOURCES}
           ${common_SOURCES}
           PARENT_SCOPE )
   endif()
endif()
+0 −46
Original line number Diff line number Diff line
@@ -99,49 +99,3 @@ protected:
} // namespace TNL

#include <TNL/Solvers/Linear/GMRES_impl.h>

#include <TNL/Matrices/CSR.h>
#include <TNL/Matrices/Ellpack.h>
#include <TNL/Matrices/Multidiagonal.h>

namespace TNL {
namespace Solvers {
namespace Linear {
   
/*extern template class GMRES< Matrices::CSR< float,  Devices::Host, int > >;
extern template class GMRES< Matrices::CSR< double, Devices::Host, int > >;
extern template class GMRES< Matrices::CSR< float,  Devices::Host, long int > >;
extern template class GMRES< Matrices::CSR< double, Devices::Host, long int > >;*/

/*extern template class GMRES< Ellpack< float,  Devices::Host, int > >;
extern template class GMRES< Ellpack< double, Devices::Host, int > >;
extern template class GMRES< Ellpack< float,  Devices::Host, long int > >;
extern template class GMRES< Ellpack< double, Devices::Host, long int > >;

extern template class GMRES< Multidiagonal< float,  Devices::Host, int > >;
extern template class GMRES< Multidiagonal< double, Devices::Host, int > >;
extern template class GMRES< Multidiagonal< float,  Devices::Host, long int > >;
extern template class GMRES< Multidiagonal< double, Devices::Host, long int > >;*/


#ifdef HAVE_CUDA
// TODO: fix this - does not work with CUDA 5.5
/*extern template class GMRES< CSR< float,  Devices::Cuda, int > >;
extern template class GMRES< CSR< double, Devices::Cuda, int > >;
extern template class GMRES< CSR< float,  Devices::Cuda, long int > >;
extern template class GMRES< CSR< double, Devices::Cuda, long int > >;*/

/*extern template class GMRES< Ellpack< float,  Devices::Cuda, int > >;
extern template class GMRES< Ellpack< double, Devices::Cuda, int > >;
extern template class GMRES< Ellpack< float,  Devices::Cuda, long int > >;
extern template class GMRES< Ellpack< double, Devices::Cuda, long int > >;

extern template class GMRES< tnlMutliDiagonalMatrix< float,  Devices::Cuda, int > >;
extern template class GMRES< tnlMutliDiagonalMatrix< double, Devices::Cuda, int > >;
extern template class GMRES< tnlMutliDiagonalMatrix< float,  Devices::Cuda, long int > >;
extern template class GMRES< tnlMutliDiagonalMatrix< double, Devices::Cuda, long int > >;*/
#endif

} // namespace Linear
} // namespace Solvers
} // namespace TNL
+0 −59
Original line number Diff line number Diff line
/***************************************************************************
                          GMRES_impl.cpp  -  description
                             -------------------
    begin                : Jan 20, 2013
    copyright            : (C) 2013 by Tomas Oberhuber
    email                : tomas.oberhuber@fjfi.cvut.cz
 ***************************************************************************/

/* See Copyright Notice in tnl/Copyright */

#ifdef TEMPLATE_EXPLICIT_INSTANTIATION

#include <TNL/Solvers/Linear/GMRES.h>
#include <TNL/Matrices/CSR.h>
#include <TNL/Matrices/Ellpack.h>
#include <TNL/Matrices/Multidiagonal.h>

namespace TNL {
namespace Solvers {
namespace Linear {

template class GMRES< Matrices::CSR< float,  Devices::Host, int > >;
template class GMRES< Matrices::CSR< double, Devices::Host, int > >;
template class GMRES< Matrices::CSR< float,  Devices::Host, long int > >;
template class GMRES< Matrices::CSR< double, Devices::Host, long int > >;

/*template class GMRES< Matrices::Ellpack< float,  Devices::Host, int > >;
template class GMRES< Matrices::Ellpack< double, Devices::Host, int > >;
template class GMRES< Matrices::Ellpack< float,  Devices::Host, long int > >;
template class GMRES< Matrices::Ellpack< double, Devices::Host, long int > >;

template class GMRES< Matrices::Multidiagonal< float,  Devices::Host, int > >;
template class GMRES< Matrices::Multidiagonal< double, Devices::Host, int > >;
template class GMRES< Matrices::Multidiagonal< float,  Devices::Host, long int > >;
template class GMRES< Matrices::Multidiagonal< double, Devices::Host, long int > >;*/


#ifdef HAVE_CUDA
template class GMRES< Matrices::CSR< float,  Devices::Cuda, int > >;
template class GMRES< Matrices::CSR< double, Devices::Cuda, int > >;
template class GMRES< Matrices::CSR< float,  Devices::Cuda, long int > >;
template class GMRES< Matrices::CSR< double, Devices::Cuda, long int > >;

/*template class GMRES< Matrices::Ellpack< float,  Devices::Cuda, int > >;
template class GMRES< Matrices::Ellpack< double, Devices::Cuda, int > >;
template class GMRES< Matrices::Ellpack< float,  Devices::Cuda, long int > >;
template class GMRES< Matrices::Ellpack< double, Devices::Cuda, long int > >;*/

/*template class GMRES< Matrices::Multidiagonal< float,  Devices::Cuda, int > >;
template class GMRES< Matrices::Multidiagonal< double, Devices::Cuda, int > >;
template class GMRES< Matrices::Multidiagonal< float,  Devices::Cuda, long int > >;
template class GMRES< Matrices::Multidiagonal< double, Devices::Cuda, long int > >;*/
#endif

} // namespace Linear
} // namespace Solvers
} // namespace TNL

#endif // #ifdef TEMPLATE_EXPLICIT_INSTANTIATION
+0 −59
Original line number Diff line number Diff line
/***************************************************************************
                          SOR_impl.cpp  -  description
                             -------------------
    begin                : Jan 20, 2013
    copyright            : (C) 2013 by Tomas Oberhuber
    email                : tomas.oberhuber@fjfi.cvut.cz
 ***************************************************************************/

/* See Copyright Notice in tnl/Copyright */

#ifdef TEMPLATE_EXPLICIT_INSTANTIATION

#include <TNL/Solvers/Linear/SOR.h>
#include <TNL/Matrices/CSR.h>
#include <TNL/Matrices/Ellpack.h>
#include <TNL/Matrices/Multidiagonal.h>

namespace TNL {
namespace Solvers {
namespace Linear {

template class SOR< Matrices::CSR< float,  Devices::Host, int > >;
template class SOR< Matrices::CSR< double, Devices::Host, int > >;
template class SOR< Matrices::CSR< float,  Devices::Host, long int > >;
template class SOR< Matrices::CSR< double, Devices::Host, long int > >;

template class SOR< Matrices::Ellpack< float,  Devices::Host, int > >;
template class SOR< Matrices::Ellpack< double, Devices::Host, int > >;
template class SOR< Matrices::Ellpack< float,  Devices::Host, long int > >;
template class SOR< Matrices::Ellpack< double, Devices::Host, long int > >;

template class SOR< Matrices::Multidiagonal< float,  Devices::Host, int > >;
template class SOR< Matrices::Multidiagonal< double, Devices::Host, int > >;
template class SOR< Matrices::Multidiagonal< float,  Devices::Host, long int > >;
template class SOR< Matrices::Multidiagonal< double, Devices::Host, long int > >;


#ifdef HAVE_CUDA
template class SOR< Matrices::CSR< float,  Devices::Cuda, int > >;
template class SOR< Matrices::CSR< double, Devices::Cuda, int > >;
template class SOR< Matrices::CSR< float,  Devices::Cuda, long int > >;
template class SOR< Matrices::CSR< double, Devices::Cuda, long int > >;

template class SOR< Matrices::Ellpack< float,  Devices::Cuda, int > >;
template class SOR< Matrices::Ellpack< double, Devices::Cuda, int > >;
template class SOR< Matrices::Ellpack< float,  Devices::Cuda, long int > >;
template class SOR< Matrices::Ellpack< double, Devices::Cuda, long int > >;

template class SOR< Matrices::Multidiagonal< float,  Devices::Cuda, int > >;
template class SOR< Matrices::Multidiagonal< double, Devices::Cuda, int > >;
template class SOR< Matrices::Multidiagonal< float,  Devices::Cuda, long int > >;
template class SOR< Matrices::Multidiagonal< double, Devices::Cuda, long int > >;
#endif

} // namespace Linear
} // namespace Solvers
} // namespace TNL

#endif // #ifdef TEMPLATE_EXPLICIT_INSTANTIATION
+0 −58
Original line number Diff line number Diff line
@@ -120,61 +120,3 @@ bool SOR< Matrix, Preconditioner > :: solve( const Vector& b, Vector& x )
} // namespace Linear
} // namespace Solvers
} // namespace TNL


#ifdef TEMPLATE_EXPLICIT_INSTANTIATION

#include <TNL/Matrices/CSR.h>
#include <TNL/Matrices/Ellpack.h>
#include <TNL/Matrices/Multidiagonal.h>

namespace TNL {
namespace Solvers {
namespace Linear {   
   
extern template class SOR< Matrices::CSR< float,  Devices::Host, int > >;
extern template class SOR< Matrices::CSR< double, Devices::Host, int > >;
extern template class SOR< Matrices::CSR< float,  Devices::Host, long int > >;
extern template class SOR< Matrices::CSR< double, Devices::Host, long int > >;

// TODO: fix this

/*extern template class SOR< Matrices::Ellpack< float,  Devices::Host, int > >;
extern template class SOR< Matrices::Ellpack< double, Devices::Host, int > >;
extern template class SOR< Matrices::Ellpack< float,  Devices::Host, long int > >;
extern template class SOR< Matrices::Ellpack< double, Devices::Host, long int > >;

extern template class SOR< Matrices::Multidiagonal< float,  Devices::Host, int > >;
extern template class SOR< Matrices::Multidiagonal< double, Devices::Host, int > >;
extern template class SOR< Matrices::Multidiagonal< float,  Devices::Host, long int > >;
extern template class SOR< Matrices::Multidiagonal< double, Devices::Host, long int > >;*/


#ifdef HAVE_CUDA
// TODO: fix this - it does not work with CUDA
/*extern template class SOR< Matrices::CSR< float,  Devices::Cuda, int > >;
extern template class SOR< Matrices::CSR< double, Devices::Cuda, int > >;
extern template class SOR< Matrices::CSR< float,  Devices::Cuda, long int > >;
extern template class SOR< Matrices::CSR< double, Devices::Cuda, long int > >;*/


/*
extern template class SOR< Matrices::Ellpack< float,  Devices::Cuda, int > >;
extern template class SOR< Matrices::Ellpack< double, Devices::Cuda, int > >;
extern template class SOR< Matrices::Ellpack< float,  Devices::Cuda, long int > >;
extern template class SOR< Matrices::Ellpack< double, Devices::Cuda, long int > >;
*/

/*
extern template class SOR< tnlMutliDiagonalMatrix< float,  Devices::Cuda, int > >;
extern template class SOR< tnlMutliDiagonalMatrix< double, Devices::Cuda, int > >;
extern template class SOR< tnlMutliDiagonalMatrix< float,  Devices::Cuda, long int > >;
extern template class SOR< tnlMutliDiagonalMatrix< double, Devices::Cuda, long int > >;
*/
#endif

} // namespace Linear
} // namespace Solvers
} // namespace TNL

#endif // #ifdef TEMPLATE_EXPLICIT_INSTANTIATION