ViennaCL - The Vienna Computing Library  1.6.2
Free open-source GPU-accelerated linear algebra and solver library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
viennacl::matrix< SCALARTYPE, F, ALIGNMENT > Class Template Reference

A dense matrix class. More...

#include <forwards.h>

Inheritance diagram for viennacl::matrix< SCALARTYPE, F, ALIGNMENT >:
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_type
iterator1
 
typedef matrix_iterator
< col_iteration, self_type
iterator2
 
typedef scalar< NumericT > value_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)
 
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)
 
self_typeoperator= (const self_type &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< NumericT > operator() (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< NumericT > operator() (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_mult
operator- () 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
 

Additional Inherited Members

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

Detailed Description

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
class viennacl::matrix< SCALARTYPE, F, ALIGNMENT >

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, least-squares.cpp, matrix-range.cpp, mtl4-with-viennacl.cpp, multithreaded.cpp, nmf.cpp, qr.cpp, qr_method.cpp, and tql2.cpp.

Definition at line 374 of file forwards.h.

Member Typedef Documentation

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
typedef base_type::size_type viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::size_type

Definition at line 664 of file matrix.hpp.

Constructor & Destructor Documentation

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::matrix ( )
inlineexplicit

The default constructor. Does not allocate any memory.

Definition at line 667 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::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 675 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::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 684 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::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 700 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
template<typename LHS , typename RHS , typename OP >
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::matrix ( matrix_expression< LHS, RHS, OP > const &  proxy)
inline

Definition at line 713 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::matrix ( identity_matrix< NumericT > const &  m)
inline

Creates the matrix from the supplied identity matrix.

Definition at line 716 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::matrix ( zero_matrix< NumericT > const &  m)
inline

Creates the matrix from the supplied zero matrix.

Definition at line 723 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::matrix ( scalar_matrix< NumericT > const &  m)
inline

Creates the matrix from the supplied scalar matrix.

Definition at line 730 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::matrix ( const base_type other)
inline

Definition at line 736 of file matrix.hpp.

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::matrix ( const self_type other)
inline

Definition at line 743 of file matrix.hpp.

Member Function Documentation

template<class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
void viennacl::matrix< SCALARTYPE, F, ALIGNMENT >::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 766 of file matrix.hpp.


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