Skip to content

Commit

Permalink
add viennacl version assertion
Browse files Browse the repository at this point in the history
  • Loading branch information
OXPHOS committed Mar 15, 2017
1 parent 4d9979f commit 0151f26
Showing 1 changed file with 16 additions and 9 deletions.
25 changes: 16 additions & 9 deletions src/shogun/mathematics/linalg/LinalgBackendViennaCL.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,12 @@
#include <viennacl/vector.hpp>
#include <viennacl/linalg/inner_prod.hpp>
#include <viennacl/linalg/matrix_operations.hpp>
#include <viennacl/linalg/sum.hpp>
#include <shogun/mathematics/linalg/GPUMemoryViennaCL.h>

#if VIENNACL_VERSION >= 10700
#include <viennacl/linalg/sum.hpp>
#endif

namespace shogun
{

Expand Down Expand Up @@ -372,14 +375,6 @@ class LinalgBackendViennaCL : public LinalgBackendGPUBase
viennacl::linalg::vector_assign(vcl_vector, value);
}

/** ViennaCL vector sum method. */
template <typename T>
T sum_impl(const SGVector<T>& vec, bool no_diag=false) const
{
GPUMemoryViennaCL<T>* vec_gpu = cast_to_viennacl(vec);
return viennacl::linalg::sum(vec_gpu->data_vector(vec.size()));
}

/** ViennaCL matrix sum method. */
template <typename T>
T sum_impl(const SGMatrix<T>& mat, bool no_diag=false) const
Expand All @@ -402,6 +397,18 @@ class LinalgBackendViennaCL : public LinalgBackendGPUBase
return result[0];
}

/** ViennaCL vector sum method. */
template <typename T>
T sum_impl(const SGVector<T>& vec, bool no_diag=false) const
{
#if VIENNACL_VERSION >= 10700
GPUMemoryViennaCL<T>* vec_gpu = cast_to_viennacl(vec);
return viennacl::linalg::sum(vec_gpu->data_vector(vec.size()));
#else
return sum_impl(SGMatrix<T>(vec));
#endif
}

/** ViennaCL matrix sum method. */
template <typename T>
T sum_symmetric_impl(const SGMatrix<T>& mat, bool no_diag=false) const
Expand Down

0 comments on commit 0151f26

Please sign in to comment.