imate
C++/CUDA Reference
Loading...
Searching...
No Matches
cu_matrix.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: Copyright 2021, Siavash Ameli <sameli@berkeley.edu>
3 * SPDX-License-Identifier: BSD-3-Clause
4 * SPDX-FileType: SOURCE
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the license found in the LICENSE.txt file in the root
8 * directory of this source tree.
9 */
10
11
12#ifndef _CU_LINEAR_OPERATOR_CU_MATRIX_H_
13#define _CU_LINEAR_OPERATOR_CU_MATRIX_H_
14
15
16// =======
17// Headers
18// =======
19
20#include "../_definitions/types.h" // FlagType, IndexType, LongIndexType
21#include "./cu_linear_operator.h" // cuLinearOperator
22
23
24// =========
25// cu Matrix
26// =========
27
42
43template <typename DataType>
44class cuMatrix : virtual public cuLinearOperator<DataType>
45{
46 public:
47
48 // Member methods
49 cuMatrix();
50
51 explicit cuMatrix(const FlagType A_is_symmetric_);
52
53 virtual ~cuMatrix();
54
55 virtual void copy_host_to_device() = 0;
56
57 DataType get_eigenvalue(
58 const DataType* known_parameters,
59 const DataType known_eigenvalue,
60 const DataType* inquiry_parameters) const;
61
62 virtual FlagType is_identity_matrix() const = 0;
63
64 virtual void set_symmetry(const FlagType symmetric);
65
66 virtual void dot_plus(
67 const DataType* vector,
68 const DataType alpha,
69 DataType* product) = 0;
70
71 virtual void transpose_dot_plus(
72 const DataType* vector,
73 const DataType alpha,
74 DataType* product) = 0;
75
76 protected:
77
78 // Member data
80};
81
82
83#endif // _CU_LINEAR_OPERATOR_CU_MATRIX_H_
Base class for linear operators. This class serves as interface for all derived classes.
Base class for constant matrices.
Definition cu_matrix.h:45
virtual void dot_plus(const DataType *vector, const DataType alpha, DataType *product)=0
virtual void transpose_dot_plus(const DataType *vector, const DataType alpha, DataType *product)=0
cuMatrix()
Default constructor.
Definition cu_matrix.cu:30
virtual ~cuMatrix()
Destructor.
Definition cu_matrix.cu:65
virtual void copy_host_to_device()=0
FlagType A_is_symmetric
Definition cu_matrix.h:79
virtual FlagType is_identity_matrix() const =0
DataType get_eigenvalue(const DataType *known_parameters, const DataType known_eigenvalue, const DataType *inquiry_parameters) const
This virtual function is implemented from its pure virtual function of the base class....
Definition cu_matrix.cu:118
virtual void set_symmetry(const FlagType symmetric)
Specify whether the matrix is symmetic or non-symmetric.
Definition cu_matrix.cu:84
int FlagType
Definition types.h:68