SkePU(integratedwithStarPU)
0.8.1
|
A matrix container class (2D matrix), internally uses 1D container (std::vector). More...
#include <matrix.h>
Classes | |
class | col_iterator |
class | iterator |
An matrix iterator class that tranverses row-wise. More... | |
class | proxy_elem |
A proxy class representing one element of Matrix. More... | |
Public Member Functions | |
starpu_data_handle_t | registerMatrix () |
To register Matrix with StarPU. Does not create partitions of Matrix. | |
void | unregisterMatrix (bool update=true) |
starpu_data_handle_t | registerPartitions (int _xparts=1, int _yparts=1) |
To register Matrix to StarPU. This method can create partitions of the matrix. | |
T * | GetArrayRep () |
void | randomize (int min=0, int max=RAND_MAX) |
Randomizes the Matrix. More... | |
void | save (const std::string &filename) |
Saves content of Matrix to a file. More... | |
void | load (const std::string &filename, int rowWidth, int numRows=0) |
Loads the Matrix from a file. More... | |
~Matrix () | |
Matrix (size_type _rows, size_type _cols) | |
Matrix (size_type _rows, size_type _cols, const T &val) | |
Matrix (const Matrix< T > ©) | |
size_type | size () const |
size_type | total_rows () const |
size_type | total_cols () const |
void | change_layout () |
void | resize (size_type _rows, size_type _cols, T val=T()) |
Matrix< T > & | operator= (Matrix< T > &other) |
Matrix< T > & | operator= (const T &elem) |
bool | operator== (const Matrix< T > &c1) |
bool | operator!= (const Matrix< T > &c1) |
bool | operator< (const Matrix< T > &c1) |
bool | operator> (const Matrix< T > &c1) |
bool | operator<= (const Matrix< T > &c1) |
bool | operator>= (const Matrix< T > &c1) |
Matrix< T > & | subsection (size_type row, size_type col, size_type rowWidth, size_type colWidth) |
iterator | begin () |
const_iterator | begin () const |
iterator | begin (unsigned row) |
const_iterator | begin (unsigned row) const |
iterator | end () |
const_iterator | end () const |
iterator | end (unsigned row) |
const_iterator | end (unsigned row) const |
std::pair< const_iterator, const_iterator > | col_iterator_range () |
col_iterator | col_begin () |
col_iterator | col_end () |
size_type | capacity () const |
void | flush () |
bool | empty () const |
void | clear () |
void | swap (Matrix< T > &from) |
T & | operator[] (const size_type index) |
void | acquireRead () const |
void | acquireReadWrite () |
const Matrix< T > & | operator+= (const Matrix< T > &rhs) |
const Matrix< T > & | operator+= (const T &rhs) |
const Matrix< T > & | operator-= (const Matrix< T > &rhs) |
const Matrix< T > & | operator-= (const T &rhs) |
const Matrix< T > & | operator*= (const Matrix< T > &rhs) |
const Matrix< T > & | operator*= (const T &rhs) |
const Matrix< T > & | operator/= (const Matrix< T > &rhs) |
const Matrix< T > & | operator/= (const T &rhs) |
const Matrix< T > & | operator%= (const Matrix< T > &rhs) |
const Matrix< T > & | operator%= (const T &rhs) |
Friends | |
std::ostream & | operator<< (std::ostream &os, Matrix< T > &matrix) |
Overloaded stream operator, for testing purposes. More... | |
A matrix container class (2D matrix), internally uses 1D container (std::vector).
A skepu::Matrix
is a 2D container that internally stores in a 1D std::vector
. Its interface and behaviour is largely compatible with skepu::Vector
and std::vector
but with some additions and variations for 2D. Instead of the regular element, it sometimes returns a proxy element so it can distinguish between reads and writes. In this version, it just register/unregister data back to StarPU and does not keep track of data by itself (no lazy memory copying).
|
inline |
Destructor, used to deallocate memory mainly, device memory.
References skepu::Matrix< T >::total_cols(), and skepu::Matrix< T >::total_rows().
|
inline |
Constructor, used to allocate memory ($_rows * _cols$).
_rows | Number of rows in the matrix. |
_cols | Number of columns in the matrix. |
|
inline |
Constructor, used to allocate memory ($_rows * _cols$). With a value ot initialize all elements.
_rows | Number of rows in the matrix. |
_cols | Number of columns in the matrix. |
val | A value to initialize all elements. |
|
inline |
Copy Constructor, used to assign copy of another matrix.
copy | Matrix that is being assigned. |
Update the matrix before assigning it to assign latest copy.
References skepu::Matrix< T >::acquireRead(), skepu::Matrix< T >::total_cols(), and skepu::Matrix< T >::total_rows().
|
inline |
Ensure that data is most updated for reading purpose on CPU
|
inline |
Ensure that data is most updated for reading and writing purpose on CPU
Matrix< T >::iterator skepu::Matrix< T >::begin | ( | ) |
Please refer to the documentation of std::vector
and skepu::Matrix::iterator
.
Matrix< T >::const_iterator skepu::Matrix< T >::begin | ( | ) | const |
Please refer to the documentation of std::vector
and skepu::Matrix::iterator
.
Matrix< T >::iterator skepu::Matrix< T >::begin | ( | unsigned | row | ) |
Please refer to the documentation of std::vector
and skepu::Matrix::iterator
. Uses row
to get an iterator for that row.
row | The index of row from where to start iterator. |
Matrix< T >::const_iterator skepu::Matrix< T >::begin | ( | unsigned | row | ) | const |
Please refer to the documentation of std::vector
and skepu::Matrix::iterator
. Uses row
to get an iterator for that row.
row | The index of row from where to start iterator. |
Matrix< T >::size_type skepu::Matrix< T >::capacity | ( | ) | const |
Please refer to the documentation of std::vector
.
|
inline |
A small utility to change rows and columns numbers with each other. A Matrix (4x7) will become (7x4) after this function call without changing the actual values. Not similar to transpose where you actually change the values.
void skepu::Matrix< T >::clear | ( | ) |
Please refer to the documentation of std::vector
. Invalidates all copies before clear.
Matrix< T >::col_iterator skepu::Matrix< T >::col_begin | ( | ) |
This works by taking a transpose of current matrix.
Matrix< T >::col_iterator skepu::Matrix< T >::col_end | ( | ) |
This works by taking a transpose of current matrix.
std::pair< typename Matrix< T >::const_iterator, typename Matrix< T >::const_iterator > skepu::Matrix< T >::col_iterator_range | ( | ) |
This works by taking a transpose of current matrix. Returns begin and end iterator as std::pair
. Can be used to make read-onkly traversal.
bool skepu::Matrix< T >::empty | ( | ) | const |
Please refer to the documentation of std::vector
.
Matrix< T >::iterator skepu::Matrix< T >::end | ( | ) |
Please refer to the documentation of std::vector
and skepu::Matrix::iterator
.
Matrix< T >::const_iterator skepu::Matrix< T >::end | ( | ) | const |
Please refer to the documentation of std::vector
and skepu::Matrix::iterator
.
Matrix< T >::iterator skepu::Matrix< T >::end | ( | unsigned | row | ) |
Please refer to the documentation of std::vector
and skepu::Matrix::iterator
. Get iterator to last element of row
.
row | Index of row the iterator will point to the last element. |
Matrix< T >::const_iterator skepu::Matrix< T >::end | ( | unsigned | row | ) | const |
Please refer to the documentation of std::vector
and skepu::Matrix::iterator
. Get iterator to last element of row
.
row | Index of row the iterator will point to the last element. |
void skepu::Matrix< T >::flush | ( | ) |
Flushes the matrix, synchronizing it with the device then release all device allocations.
|
inline |
Get array representation
|
inline |
Loads the Matrix from a file.
Reads a variable number of elements from a file. In the file, all elemets should be in ASCII on one line with whitespace between each element. Mainly for testing purposes.
filename | Name of file to save to. |
rowWidth | The width of a row. All rows get same amount of width. |
numRows | The number of rows to be loaded. Default value 0 means all rows. |
References skepu::Matrix< T >::clear(), and skepu::Matrix< T >::size().
bool skepu::Matrix< T >::operator!= | ( | const Matrix< T > & | c1 | ) |
Please refer to the documentation of std::vector
.
References skepu::Matrix< T >::acquireRead().
const Matrix< T > & skepu::Matrix< T >::operator%= | ( | const Matrix< T > & | rhs | ) |
Taking Mod with rhs
matrix, element wise to current matrix. Two matrices must be of same size.
rhs | The value which is used in taking mod to current matrix. |
References skepu::Matrix< T >::acquireRead().
const Matrix< T > & skepu::Matrix< T >::operator%= | ( | const T & | rhs | ) |
Taking Mod with a scalar value to all elements in the current matrix.
rhs | The value which is used in taking mod to current matrix. |
const Matrix< T > & skepu::Matrix< T >::operator*= | ( | const Matrix< T > & | rhs | ) |
Multiplies rhs
matrix operation element wise to current matrix. Two matrices must be of same size. NB it is not matrix multiplication
rhs | The matrix which is used in multiplication to current matrix. |
References skepu::Matrix< T >::acquireRead().
const Matrix< T > & skepu::Matrix< T >::operator*= | ( | const T & | rhs | ) |
Multiplies a scalar value to all elements in the current matrix.
rhs | The value which is used in multiplication to current matrix. |
const Matrix< T > & skepu::Matrix< T >::operator+= | ( | const Matrix< T > & | rhs | ) |
Add rhs
matrix operation element wise to current matrix. Two matrices must be of same size.
rhs | The matrix which is used in addition to current matrix. |
References skepu::Matrix< T >::acquireRead().
const Matrix< T > & skepu::Matrix< T >::operator+= | ( | const T & | rhs | ) |
Adds a scalar value to all elements in the current matrix.
rhs | The value which is used in addition to current matrix. |
const Matrix< T > & skepu::Matrix< T >::operator-= | ( | const Matrix< T > & | rhs | ) |
Subtract rhs
matrix operation element wise to current matrix. Two matrices must be of same size.
rhs | The matrix which is used in subtraction to current matrix. |
References skepu::Matrix< T >::acquireRead().
const Matrix< T > & skepu::Matrix< T >::operator-= | ( | const T & | rhs | ) |
Subtracts a scalar value to all elements in the current matrix.
rhs | The value which is used in subtraction to current matrix. |
const Matrix< T > & skepu::Matrix< T >::operator/= | ( | const Matrix< T > & | rhs | ) |
Divides rhs
matrix operation element wise to current matrix. Two matrices must be of same size. NB it is not matrix multiplication
rhs | The matrix which is used in division to current matrix. |
References skepu::Matrix< T >::acquireRead().
const Matrix< T > & skepu::Matrix< T >::operator/= | ( | const T & | rhs | ) |
Divides a scalar value to all elements in the current matrix.
rhs | The value which is used in division to current matrix. |
bool skepu::Matrix< T >::operator< | ( | const Matrix< T > & | c1 | ) |
Please refer to the documentation of std::vector
.
References skepu::Matrix< T >::acquireRead().
bool skepu::Matrix< T >::operator<= | ( | const Matrix< T > & | c1 | ) |
Please refer to the documentation of std::vector
.
References skepu::Matrix< T >::acquireRead().
Matrix< T > & skepu::Matrix< T >::operator= | ( | Matrix< T > & | other | ) |
copy matrix,,, copy row and column count as well along with data
References skepu::Matrix< T >::acquireRead().
Matrix< T > & skepu::Matrix< T >::operator= | ( | const T & | elem | ) |
To initialize a matrix with some scalar value.
elem | The element you want to assign to all matrix. |
bool skepu::Matrix< T >::operator== | ( | const Matrix< T > & | c1 | ) |
Please refer to the documentation of std::vector
.
References skepu::Matrix< T >::acquireRead().
bool skepu::Matrix< T >::operator> | ( | const Matrix< T > & | c1 | ) |
Please refer to the documentation of std::vector
.
References skepu::Matrix< T >::acquireRead().
bool skepu::Matrix< T >::operator>= | ( | const Matrix< T > & | c1 | ) |
Please refer to the documentation of std::vector
.
References skepu::Matrix< T >::acquireRead().
T & skepu::Matrix< T >::operator[] | ( | const size_type | index | ) |
Does not care about synchronizing with device. Can be used when accessing many elements quickly so that no synchronization overhead effects performance. Make sure to properly synch with device by calling updateHost etc before use.
index | Index of element assuming continuous Matrix row-wise storage. To facilitate access using single indexing |
|
inline |
Randomizes the Matrix.
Sets each element of the Matrix to a random number between min
and max
. The numbers are generated as integers
but are cast to the type of the matrix.
min | The smallest number an element can become. |
max | The largest number an element can become. |
References skepu::Matrix< T >::size(), and skepu::Matrix< T >::unregisterMatrix().
void skepu::Matrix< T >::resize | ( | size_type | _rows, |
size_type | _cols, | ||
T | val = T() |
||
) |
resize matrix,,, invalidates all copies before resizing.
|
inline |
Saves content of Matrix to a file.
Outputs the matrix as text on one line with space between elements to the specified file. Mainly for testing purposes.
filename | Name of file to save to. |
|
inline |
Matrix< T > & skepu::Matrix< T >::subsection | ( | size_type | row, |
size_type | col, | ||
size_type | rowWidth, | ||
size_type | colWidth | ||
) |
To get a subsection of matrix. This will creat a separate copy.
row | Index of row to get. |
rowWidth | Width of the row of new Matrix. |
col | Index of column to get. |
colWidth | Width of column of new Matrix. |
References skepu::Matrix< T >::total_cols(), and skepu::Matrix< T >::total_rows().
void skepu::Matrix< T >::swap | ( | Matrix< T > & | from | ) |
Please refer to the documentation of std::vector
. Updates and invalidate both Matrices before swapping.
References skepu::Matrix< T >::unregisterMatrix().
|
inline |
|
inline |
|
inline |
Used to unregister data handle with StarPU (pass "false" to not ensure most updated value is returned back)
|
friend |
Overloaded stream operator, for testing purposes.
Outputs the matrix rowwise having one row on each line.