MUDA
Loading...
Searching...
No Matches
device_dense_vector.h
1#pragma once
2#include <muda/ext/linear_system/dense_vector_view.h>
4#include <cusparse.h>
5
6namespace muda::details
7{
8template <typename T, int N>
9class MatrixFormatConverter;
10}
11
12namespace muda
13{
14template <typename T>
16{
17 static_assert(std::is_same_v<T, float> || std::is_same_v<T, double>,
18 "now only support real number");
19
21 cusparseDnVecDescr_t m_descr = nullptr;
22
23 public:
24 DeviceDenseVector() = default;
25 DeviceDenseVector(size_t size);
27
30 DeviceDenseVector& operator=(const DeviceDenseVector&);
32
33 void reserve(size_t size);
34 void resize(size_t size);
35 void fill(T value);
36 void copy_to(Eigen::VectorX<T>& vec) const;
37 void copy_to(std::vector<T>& vec) const;
38
39 DeviceDenseVector(const Eigen::VectorX<T>& vec);
40 DeviceDenseVector& operator=(const Eigen::VectorX<T>& vec);
41
42 DenseVectorViewer<T> viewer() { return view().viewer(); }
43 CDenseVectorViewer<T> viewer() const { return view().cviewer(); }
44
45 auto capacity() const { return m_data.capacity(); }
46 auto size() const { return m_data.size(); }
47 auto buffer_view() const { return m_data.view(); }
48 auto buffer_view() { return m_data.view(); }
49
50 CDenseVectorView<T> view() const;
51 DenseVectorView<T> view();
52 CDenseVectorView<T> cview() const { return view(); }
53
54 operator CDenseVectorView<T>() const { return view(); }
55 operator DenseVectorView<T>() { return view(); }
56
57 cusparseDnVecDescr_t descr() const { return m_descr; }
58};
59} // namespace muda
60
61#include "details/device_dense_vector.inl"
Definition dense_vector_viewer.h:173
Definition dense_vector_view.h:10
Definition dense_vector_viewer.h:202
A std::vector like wrapper of cuda device memory, allows user to:
Definition device_buffer.h:46
Definition device_dense_vector.h:16
A light-weight wrapper of cuda device memory. Like std::vector, allow user to resize,...