Reference documentation for deal.II version 9.1.1
\(\newcommand{\dealcoloneq}{\mathrel{\vcenter{:}}=}\)
deal.II
lac
cuda_solver_direct.h
1
// ---------------------------------------------------------------------
2
//
3
// Copyright (C) 2018 - 2019 by the deal.II authors
4
//
5
// This file is part of the deal.II library.
6
//
7
// The deal.II library is free software; you can use it, redistribute
8
// it, and/or modify it under the terms of the GNU Lesser General
9
// Public License as published by the Free Software Foundation; either
10
// version 2.1 of the License, or (at your option) any later version.
11
// The full text of the license can be found in the file LICENSE.md at
12
// the top level directory of deal.II.
13
//
14
// ---------------------------------------------------------------------
15
16
#ifndef dealii_cuda_solver_direct_h
17
#define dealii_cuda_solver_direct_h
18
19
#include <deal.II/base/config.h>
20
21
#ifdef DEAL_II_COMPILER_CUDA_AWARE
22
# include <deal.II/base/cuda.h>
23
24
# include <deal.II/lac/cuda_sparse_matrix.h>
25
# include <deal.II/lac/cuda_vector.h>
26
# include <deal.II/lac/solver_control.h>
27
28
DEAL_II_NAMESPACE_OPEN
29
30
namespace
CUDAWrappers
31
{
42
template
<
typename
Number>
43
class
SolverDirect
44
{
45
public
:
49
struct
AdditionalData
50
{
54
explicit
AdditionalData
(
const
std::string &
solver_type
=
"LU_dense"
);
55
66
std::string
solver_type
;
67
};
68
72
SolverDirect
(
const
Utilities::CUDA::Handle
&handle,
73
SolverControl
& cn,
74
const
AdditionalData
& data =
AdditionalData
());
75
79
virtual
~SolverDirect
() =
default
;
80
84
void
85
solve
(
const
SparseMatrix<Number>
& A,
86
LinearAlgebra::CUDAWrappers::Vector<Number>
& x,
87
const
LinearAlgebra::CUDAWrappers::Vector<Number>
&b);
88
92
SolverControl
&
93
control
()
const
;
94
95
private
:
99
const
Utilities::CUDA::Handle
&
cuda_handle
;
100
107
SolverControl
&
solver_control
;
108
112
const
AdditionalData
additional_data
;
113
};
114
}
// namespace CUDAWrappers
115
116
DEAL_II_NAMESPACE_CLOSE
117
118
#endif
119
120
#endif
Utilities::CUDA::Handle
Definition:
cuda.h:43
CUDAWrappers::SparseMatrix
Definition:
cuda_precondition.h:44
CUDAWrappers::SolverDirect::SolverDirect
SolverDirect(const Utilities::CUDA::Handle &handle, SolverControl &cn, const AdditionalData &data=AdditionalData())
CUDAWrappers::SolverDirect::cuda_handle
const Utilities::CUDA::Handle & cuda_handle
Definition:
cuda_solver_direct.h:99
LinearAlgebra::CUDAWrappers::Vector
Definition:
cuda_precondition.h:36
CUDAWrappers::SolverDirect::control
SolverControl & control() const
CUDAWrappers
Definition:
cuda_size.h:23
CUDAWrappers::SolverDirect::solve
void solve(const SparseMatrix< Number > &A, LinearAlgebra::CUDAWrappers::Vector< Number > &x, const LinearAlgebra::CUDAWrappers::Vector< Number > &b)
CUDAWrappers::SolverDirect::AdditionalData::solver_type
std::string solver_type
Definition:
cuda_solver_direct.h:66
CUDAWrappers::SolverDirect
Definition:
cuda_solver_direct.h:43
CUDAWrappers::SolverDirect::AdditionalData
Definition:
cuda_solver_direct.h:49
CUDAWrappers::SolverDirect::additional_data
const AdditionalData additional_data
Definition:
cuda_solver_direct.h:112
CUDAWrappers::SolverDirect::AdditionalData::AdditionalData
AdditionalData(const std::string &solver_type="LU_dense")
CUDAWrappers::SolverDirect::solver_control
SolverControl & solver_control
Definition:
cuda_solver_direct.h:107
SolverControl
Definition:
solver_control.h:65
CUDAWrappers::SolverDirect::~SolverDirect
virtual ~SolverDirect()=default
Generated by
1.8.16