33#ifndef GKO_PUBLIC_CORE_BASE_DEVICE_MATRIX_DATA_HPP_
34#define GKO_PUBLIC_CORE_BASE_DEVICE_MATRIX_DATA_HPP_
37#include <ginkgo/core/base/array.hpp>
38#include <ginkgo/core/base/dim.hpp>
39#include <ginkgo/core/base/exception_helpers.hpp>
40#include <ginkgo/core/base/executor.hpp>
41#include <ginkgo/core/base/matrix_data.hpp>
62template <
typename ValueType,
typename IndexType>
65 using value_type = ValueType;
66 using index_type = IndexType;
133 std::shared_ptr<const Executor> exec,
const host_type& data);
276template <
typename ValueType,
typename IndexType>
278 static std::unique_ptr<device_matrix_data<ValueType, IndexType>> create(
279 std::shared_ptr<const Executor> exec,
283 return std::make_unique<device_matrix_data<ValueType, IndexType>>(
284 std::move(exec), *ptr);
286 return std::make_unique<device_matrix_data<ValueType, IndexType>>(
292template <
typename ValueType,
typename IndexType>
293struct temporary_clone_helper<
const device_matrix_data<ValueType, IndexType>> {
294 static std::unique_ptr<const device_matrix_data<ValueType, IndexType>>
295 create(std::shared_ptr<const Executor> exec,
298 return std::make_unique<const device_matrix_data<ValueType, IndexType>>(
299 std::move(exec), *ptr);
306template <
typename ValueType,
typename IndexType>
307class copy_back_deleter<device_matrix_data<ValueType, IndexType>> {
324 void operator()(pointer ptr)
const
An array is a container which encapsulates fixed-sized arrays, stored on the Executor tied to the arr...
Definition array.hpp:187
value_type * get_data() noexcept
Returns a pointer to the block of memory used to store the elements of the array.
Definition array.hpp:646
std::shared_ptr< const Executor > get_executor() const noexcept
Returns the Executor associated with the array.
Definition array.hpp:662
const value_type * get_const_data() const noexcept
Returns a constant pointer to the block of memory used to store the elements of the array.
Definition array.hpp:655
size_type get_num_elems() const noexcept
Returns the number of elements in the array.
Definition array.hpp:637
This type is a device-side equivalent to matrix_data.
Definition device_matrix_data.hpp:63
dim< 2 > get_size() const
Returns the dimensions of the matrix.
Definition device_matrix_data.hpp:171
device_matrix_data(std::shared_ptr< const Executor > exec, dim< 2 > size, RowIndexArray &&row_idxs, ColIndexArray &&col_idxs, ValueArray &&values)
Initializes a new device_matrix_data object from existing data.
Definition device_matrix_data.hpp:103
static device_matrix_data create_from_host(std::shared_ptr< const Executor > exec, const host_type &data)
Creates a device_matrix_data object from the given host data on the given executor.
const index_type * get_const_row_idxs() const
Returns a pointer to the constant row index array.
Definition device_matrix_data.hpp:192
index_type * get_row_idxs()
Returns a pointer to the row index array.
Definition device_matrix_data.hpp:185
const value_type * get_const_values() const
Returns a pointer to the constant value array.
Definition device_matrix_data.hpp:226
device_matrix_data(std::shared_ptr< const Executor > exec, dim< 2 > size={}, size_type num_entries=0)
Initializes a new device_matrix_data object.
const index_type * get_const_col_idxs() const
Returns a pointer to the constant column index array.
Definition device_matrix_data.hpp:209
void resize_and_reset(size_type new_num_entries)
Resizes the internal storage to the given number of stored matrix entries.
void resize_and_reset(dim< 2 > new_size, size_type new_num_entries)
Resizes the matrix and internal storage to the given dimensions.
size_type get_num_elems() const
Returns the number of stored elements of the matrix.
Definition device_matrix_data.hpp:178
void sort_row_major()
Sorts the matrix entries in row-major order This means that they will be sorted by row index first,...
void sum_duplicates()
Sums up all duplicate entries pointing to the same non-zero location.
arrays empty_out()
Moves out the internal arrays of the device_matrix_data object and resets it to an empty 0x0 matrix.
std::shared_ptr< const Executor > get_executor() const
Returns the executor used to store the device_matrix_data entries.
Definition device_matrix_data.hpp:161
device_matrix_data(std::shared_ptr< const Executor > exec, const device_matrix_data &data)
Initializes a device_matrix_data object by copying an existing object on another executor.
index_type * get_col_idxs()
Returns a pointer to the column index array.
Definition device_matrix_data.hpp:202
value_type * get_values()
Returns a pointer to the value array.
Definition device_matrix_data.hpp:219
void remove_zeros()
Removes all zero entries from the storage.
host_type copy_to_host() const
Copies the device_matrix_data entries to the host to return a regular matrix_data object with the sam...
The Ginkgo namespace.
Definition abstract_factory.hpp:48
constexpr T one()
Returns the multiplicative identity for T.
Definition math.hpp:803
std::size_t size_type
Integral type used for allocation quantities.
Definition types.hpp:120
Stores the internal arrays of a device_matrix_data object.
Definition device_matrix_data.hpp:251
A type representing the dimensions of a multidimensional object.
Definition dim.hpp:55
Type used to store nonzeros.
Definition matrix_data.hpp:89
This structure is used as an intermediate data type to store a sparse matrix.
Definition matrix_data.hpp:155