34 #ifndef __GPUMATRIX_H__
35 #define __GPUMATRIX_H__
45 #ifndef SWIG // SWIG should skip this part
48 #if VIENNACL_VERSION >= 10600
49 template <
class,
class,
class>
class matrix_base;
51 template <
class,
class,
class,
class>
class matrix_base;
53 template <
class>
class const_entry_proxy;
54 template <
class>
class entry_proxy;
65 template <
class,
int,
int,
int,
int,
int>
class Matrix;
71 template <
class>
class SGMatrix;
84 template <
class T>
class CGPUMatrix
86 #if VIENNACL_VERSION >= 10600
87 typedef viennacl::matrix_base<T, std::size_t, std::ptrdiff_t> VCLMatrixBase;
89 typedef viennacl::matrix_base<T, viennacl::column_major, std::size_t, std::ptrdiff_t> VCLMatrixBase;
91 typedef viennacl::backend::mem_handle VCLMemoryArray;
100 template <
typename ST>
using container_type = CGPUMatrix<ST>;
120 CGPUMatrix(std::shared_ptr<VCLMemoryArray> mem,
index_t nrows,
index_t ncols,
124 CGPUMatrix(
const SGMatrix<T>& cpu_mat);
127 operator SGMatrix<T>()
const;
130 CGPUMatrix(
const EigenMatrixXt& cpu_mat);
133 operator EigenMatrixXt()
const;
136 inline VCLMatrixBase data()
142 inline uint64_t size()
const
144 const uint64_t c=num_cols;
151 VCLMatrixBase vcl_matrix();
160 void set_const(T value);
163 void display_matrix(
const char* name=
"matrix")
const;
171 viennacl::const_entry_proxy<T> operator()(
index_t i,
index_t j)
const;
186 viennacl::const_entry_proxy<T> operator[](
index_t index)
const;
193 viennacl::entry_proxy<T> operator[](
index_t index);
200 std::shared_ptr<VCLMemoryArray> matrix;
218 #endif // HAVE_VIENNACL
219 #endif // __GPUMATRIX_H__
all of classes and functions are contained in the shogun namespace