ViennaCL - The Vienna Computing Library  1.7.0
Free open-source GPU-accelerated linear algebra and solver library.
viennacl::matrix< NumericT, F, AlignmentV > Class Template Reference

A dense matrix class. More...

#include <forwards.h>

Inheritance diagram for viennacl::matrix< NumericT, F, AlignmentV >:
viennacl::matrix_base< NumericT >

Public Types

typedef base_type::size_type size_type
 
- Public Types inherited from viennacl::matrix_base< NumericT >
typedef matrix_iterator< row_iteration, self_typeiterator1
 
typedef matrix_iterator< col_iteration, self_typeiterator2
 
typedef scalar< NumericTvalue_type
 
typedef NumericT cpu_value_type
 
typedef SizeT size_type
 
typedef DistanceT difference_type
 
typedef viennacl::backend::mem_handle handle_type
 

Public Member Functions

 matrix ()
 The default constructor. Does not allocate any memory. More...
 
 matrix (size_type rows, size_type columns, viennacl::context ctx=viennacl::context())
 Creates the matrix with the given dimensions. More...
 
 matrix (NumericT *ptr_to_mem, viennacl::memory_types mem_type, size_type rows, size_type cols)
 Wraps a CUDA or host buffer provided by the user. More...
 
 matrix (NumericT *ptr_to_mem, viennacl::memory_types mem_type, size_type rows, size_type internal_row_count, size_type cols, size_type internal_col_count)
 Wraps a CUDA or host buffer provided by the user including padding of rows and columns. More...
 
template<typename LHS , typename RHS , typename OP >
 matrix (matrix_expression< LHS, RHS, OP > const &proxy)
 
 matrix (identity_matrix< NumericT > const &m)
 Creates the matrix from the supplied identity matrix. More...
 
 matrix (zero_matrix< NumericT > const &m)
 Creates the matrix from the supplied zero matrix. More...
 
 matrix (scalar_matrix< NumericT > const &m)
 Creates the matrix from the supplied scalar matrix. More...
 
 matrix (const base_type &other)
 
 matrix (const self_type &other)
 
template<typename OtherNumericT , typename F2 >
base_typeoperator= (viennacl::matrix< OtherNumericT, F2 > const &B)
 
template<typename OtherNumericT , typename F2 >
base_typeoperator= (viennacl::matrix_range< viennacl::matrix< OtherNumericT, F2 > > const &B)
 
template<typename OtherNumericT , typename F2 >
base_typeoperator= (viennacl::matrix_slice< viennacl::matrix< OtherNumericT, F2 > > const &B)
 
void resize (size_type rows, size_type columns, bool preserve=true)
 Resizes the matrix. Existing entries can optionally be preserved. More...
 
- Public Member Functions inherited from viennacl::matrix_base< NumericT >
 matrix_base ()
 The default constructor. Does not allocate any memory. More...
 
 matrix_base (bool is_row_major)
 The layout constructor. Does not allocate any memory. More...
 
 matrix_base (size_type rows, size_type columns, bool is_row_major, viennacl::context ctx=viennacl::context())
 Creates the matrix with the given dimensions. More...
 
 matrix_base (viennacl::backend::mem_handle &h, size_type mat_size1, size_type mat_start1, size_type mat_stride1, size_type mat_internal_size1, size_type mat_size2, size_type mat_start2, size_type mat_stride2, size_type mat_internal_size2, bool is_row_major)
 Constructor for creating a matrix_range or matrix_stride from some other matrix/matrix_range/matrix_stride. More...
 
 matrix_base (matrix_expression< const LHS, const RHS, OP > const &proxy)
 Constructor for creating a matrix_range or matrix_stride from some other matrix/matrix_range/matrix_stride. More...
 
 matrix_base (NumericT *ptr_to_mem, viennacl::memory_types mem_type, size_type mat_size1, size_type mat_start1, size_type mat_stride1, size_type mat_internal_size1, size_type mat_size2, size_type mat_start2, size_type mat_stride2, size_type mat_internal_size2, bool is_row_major)
 
 matrix_base (const self_type &other)
 
 matrix_base (const matrix_base< OtherNumericT, SizeT, DistanceT > &other)
 
self_typeoperator= (const self_type &other)
 
self_typeoperator= (const matrix_base< OtherNumericT, SizeT, DistanceT > &other)
 
self_typeoperator= (const matrix_expression< const LHS, const RHS, OP > &proxy)
 Implementation of the operation m1 = m2 @ alpha, where @ denotes either multiplication or division, and alpha is either a CPU or a GPU scalar. More...
 
self_typeoperator= (const matrix_expression< const self_type, const self_type, op_trans > &proxy)
 
self_typeoperator= (identity_matrix< NumericT > const &m)
 Assigns the supplied identity matrix to the matrix. More...
 
self_typeoperator= (zero_matrix< NumericT > const &m)
 Assigns the supplied zero matrix to the matrix. More...
 
self_typeoperator= (scalar_matrix< NumericT > const &m)
 Assigns the supplied scalar vector to the matrix. More...
 
self_typeoperator+= (const matrix_expression< const LHS, const RHS, OP > &proxy)
 
self_typeoperator+= (const self_type &other)
 
self_typeoperator-= (const matrix_expression< const LHS, const RHS, OP > &proxy)
 
self_typeoperator-= (const self_type &other)
 
entry_proxy< NumericToperator() (size_type row_index, size_type col_index)
 Read-write access to a single element of the matrix/matrix_range/matrix_slice. More...
 
const_entry_proxy< NumericToperator() (size_type row_index, size_type col_index) const
 Read access to a single element of the matrix/matrix_range/matrix_slice. More...
 
self_typeoperator*= (char val)
 Scales the matrix by a char (8-bit integer) More...
 
self_typeoperator*= (short val)
 Scales the matrix by a short integer. More...
 
self_typeoperator*= (int val)
 Scales the matrix by an integer. More...
 
self_typeoperator*= (long val)
 Scales the matrix by a long integer. More...
 
self_typeoperator*= (float val)
 Scales the matrix by a single precision floating point value. More...
 
self_typeoperator*= (double val)
 Scales the matrix by a double precision floating point value. More...
 
self_typeoperator/= (char val)
 Scales the matrix by a char (8-bit integer) More...
 
self_typeoperator/= (short val)
 Scales the matrix by a short integer. More...
 
self_typeoperator/= (int val)
 Scales the matrix by an integer. More...
 
self_typeoperator/= (long val)
 Scales the matrix by a long integer. More...
 
self_typeoperator/= (float val)
 Scales the matrix by a single precision floating point value. More...
 
self_typeoperator/= (double val)
 Scales the matrix by a double precision floating point value. More...
 
matrix_expression< const self_type, const NumericT, op_multoperator- () const
 Sign flip for the matrix. Emulated to be equivalent to -1.0 * matrix. More...
 
size_type size1 () const
 Returns the number of rows. More...
 
size_type size2 () const
 Returns the number of columns. More...
 
size_type start1 () const
 Returns the number of rows. More...
 
size_type start2 () const
 Returns the number of columns. More...
 
size_type stride1 () const
 Returns the number of rows. More...
 
size_type stride2 () const
 Returns the number of columns. More...
 
void clear ()
 Resets all entries to zero. More...
 
size_type internal_size1 () const
 Returns the internal number of rows. Usually required for launching OpenCL kernels only. More...
 
size_type internal_size2 () const
 Returns the internal number of columns. Usually required for launching OpenCL kernels only. More...
 
size_type internal_size () const
 Returns the total amount of allocated memory in multiples of sizeof(NumericT) More...
 
handle_typehandle ()
 Returns the OpenCL handle, non-const-version. More...
 
const handle_typehandle () const
 Returns the OpenCL handle, const-version. More...
 
viennacl::memory_types memory_domain () const
 
bool row_major () const
 
void switch_memory_context (viennacl::context new_ctx)
 

Additional Inherited Members

- Protected Member Functions inherited from viennacl::matrix_base< NumericT >
void set_handle (viennacl::backend::mem_handle const &h)
 
void resize (size_type rows, size_type columns, bool preserve=true)
 

Detailed Description

template<class NumericT, typename F, unsigned int AlignmentV>
class viennacl::matrix< NumericT, F, AlignmentV >

A dense matrix class.

Template Parameters
NumericTThe underlying scalar type (either float or double)
FStorage layout: Either row_major or column_major
AlignmentVThe internal memory size is given by (size()/AlignmentV + 1) * AlignmentV. AlignmentV must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
Examples:
blas2.cpp, blas3.cpp, custom-context.cpp, eigen-with-viennacl.cpp, fft.cpp, lanczos.cpp, least-squares.cpp, matrix-range.cpp, mtl4-with-viennacl.cpp, nmf.cpp, qr.cpp, qr_method.cpp, and tql2.cpp.

Definition at line 375 of file forwards.h.

Member Typedef Documentation

template<class NumericT, typename F, unsigned int AlignmentV>
typedef base_type::size_type viennacl::matrix< NumericT, F, AlignmentV >::size_type

Definition at line 701 of file matrix.hpp.

Constructor & Destructor Documentation

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( )
inlineexplicit

The default constructor. Does not allocate any memory.

Definition at line 704 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( size_type  rows,
size_type  columns,
viennacl::context  ctx = viennacl::context() 
)
inlineexplicit

Creates the matrix with the given dimensions.

Parameters
rowsNumber of rows
columnsNumber of columns
ctxOptional context in which the matrix is created (one out of multiple OpenCL contexts, CUDA, host)

Definition at line 712 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( NumericT ptr_to_mem,
viennacl::memory_types  mem_type,
size_type  rows,
size_type  cols 
)
inlineexplicit

Wraps a CUDA or host buffer provided by the user.

Parameters
ptr_to_memThe pointer to existing memory
mem_typeType of the memory (either viennacl::CUDA_MEMORY if available, or viennacl::HOST_MEMORY)
rowsNumber of rows of the matrix
colsNumber of columns of the matrix

Definition at line 721 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( NumericT ptr_to_mem,
viennacl::memory_types  mem_type,
size_type  rows,
size_type  internal_row_count,
size_type  cols,
size_type  internal_col_count 
)
inlineexplicit

Wraps a CUDA or host buffer provided by the user including padding of rows and columns.

Parameters
ptr_to_memThe pointer to existing memory
mem_typeType of the memory (either viennacl::CUDA_MEMORY if available, or viennacl::HOST_MEMORY)
rowsNumber of rows of the matrix
internal_row_countNumber of rows including padding the buffer by e.g. zeros.
colsNumber of columns of the matrix
internal_col_countNumber of columns including padding the buffer by e.g. zeros.

Definition at line 737 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
template<typename LHS , typename RHS , typename OP >
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( matrix_expression< LHS, RHS, OP > const &  proxy)
inline

Definition at line 750 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( identity_matrix< NumericT > const &  m)
inline

Creates the matrix from the supplied identity matrix.

Definition at line 753 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( zero_matrix< NumericT > const &  m)
inline

Creates the matrix from the supplied zero matrix.

Definition at line 760 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( scalar_matrix< NumericT > const &  m)
inline

Creates the matrix from the supplied scalar matrix.

Definition at line 767 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( const base_type other)
inline

Definition at line 773 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
viennacl::matrix< NumericT, F, AlignmentV >::matrix ( const self_type other)
inline

Definition at line 780 of file matrix.hpp.

Member Function Documentation

template<class NumericT, typename F, unsigned int AlignmentV>
template<typename OtherNumericT , typename F2 >
base_type& viennacl::matrix< NumericT, F, AlignmentV >::operator= ( viennacl::matrix< OtherNumericT, F2 > const &  B)
inline

Definition at line 798 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
template<typename OtherNumericT , typename F2 >
base_type& viennacl::matrix< NumericT, F, AlignmentV >::operator= ( viennacl::matrix_range< viennacl::matrix< OtherNumericT, F2 > > const &  B)
inline

Definition at line 801 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
template<typename OtherNumericT , typename F2 >
base_type& viennacl::matrix< NumericT, F, AlignmentV >::operator= ( viennacl::matrix_slice< viennacl::matrix< OtherNumericT, F2 > > const &  B)
inline

Definition at line 804 of file matrix.hpp.

template<class NumericT, typename F, unsigned int AlignmentV>
void viennacl::matrix< NumericT, F, AlignmentV >::resize ( size_type  rows,
size_type  columns,
bool  preserve = true 
)
inline

Resizes the matrix. Existing entries can optionally be preserved.

Parameters
rowsNew number of rows
columnsNew number of columns
preserveIf true, existing values are preserved.

Definition at line 813 of file matrix.hpp.


The documentation for this class was generated from the following files: