MUDA
Loading...
Searching...
No Matches
device_dense_matrix.h
1
#pragma once
2
#include <muda/ext/linear_system/dense_matrix_view.h>
3
#include <muda/buffer/device_buffer_2d.h>
4
5
namespace
muda::details
6
{
7
template
<
typename
T,
int
N>
8
class
MatrixFormatConverter;
9
}
10
11
namespace
muda
12
{
13
// A column major dense matrix on device.
14
template
<
typename
Ty>
15
class
DeviceDenseMatrix
16
{
17
static_assert
(std::is_same_v<Ty, float> || std::is_same_v<Ty, double>,
18
"now only support real number"
);
19
20
DeviceBuffer2D<Ty>
m_data;
21
size_t
m_row = 0;
22
size_t
m_col = 0;
23
bool
m_sym =
false
;
24
25
public
:
26
using
value_type = Ty;
27
DeviceDenseMatrix
() =
default
;
28
DeviceDenseMatrix
(
size_t
row,
size_t
col,
bool
sym =
false
);
29
void
sym(
bool
sym =
true
) { m_sym = sym; }
30
bool
sym()
const
{
return
m_sym; }
31
32
DeviceDenseMatrix
(
const
DeviceDenseMatrix
&) =
default
;
33
DeviceDenseMatrix
(
DeviceDenseMatrix
&&);
34
35
DeviceDenseMatrix
& operator=(
const
DeviceDenseMatrix
&) =
default
;
36
DeviceDenseMatrix
& operator=(
DeviceDenseMatrix
&&);
37
38
size_t
row()
const
{
return
m_row; }
39
size_t
col()
const
{
return
m_col; }
40
41
void
reshape(
size_t
row,
size_t
col);
42
void
fill(Ty value);
43
void
copy_to(Eigen::MatrixX<Ty>& mat)
const
;
44
void
copy_to(std::vector<Ty>& vec)
const
;
45
46
DeviceDenseMatrix
(
const
Eigen::MatrixX<Ty>&);
47
DeviceDenseMatrix
& operator=(
const
Eigen::MatrixX<Ty>&);
48
49
DenseMatrixViewer<Ty>
viewer() {
return
view().viewer(); }
50
CDenseMatrixViewer<Ty>
cviewer()
const
{
return
view().cviewer(); }
51
52
auto
buffer_view()
const
{
return
m_data.view(); }
53
auto
buffer_view() {
return
m_data.view(); }
54
55
DenseMatrixView<Ty>
T();
56
CDenseMatrixView<Ty>
T()
const
;
57
58
DenseMatrixView<Ty>
view();
59
CDenseMatrixView<Ty>
view()
const
;
60
CDenseMatrixView<Ty>
cview()
const
{
return
view(); }
61
62
operator
DenseMatrixView<Ty>
();
63
operator
CDenseMatrixView<Ty>
()
const
;
64
};
65
}
// namespace muda
66
67
#include "details/device_dense_matrix.inl"
muda::CDenseMatrixView
Definition
dense_matrix_view.h:93
muda::CDenseMatrixViewer
Definition
dense_matrix_viewer.h:111
muda::DenseMatrixView
Definition
dense_matrix_view.h:108
muda::DenseMatrixViewer
Definition
dense_matrix_viewer.h:142
muda::DeviceBuffer2D
Definition
device_buffer_2d.h:13
muda::DeviceDenseMatrix
Definition
device_dense_matrix.h:16
src
muda
ext
linear_system
device_dense_matrix.h
Generated by
1.9.8