Fork me on GitHub
 All Classes Files Functions Variables Groups Pages
bicg.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008-2014 NVIDIA Corporation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
21 #pragma once
22 
23 #include <cusp/detail/config.h>
24 
25 #include <cusp/execution_policy.h>
26 
27 namespace cusp
28 {
29 namespace krylov
30 {
37 /* \cond */
38 template <typename DerivedPolicy,
39  class LinearOperator,
40  class Vector>
41 void bicg(const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
42  LinearOperator& A,
43  LinearOperator& At,
44  Vector& x,
45  Vector& b);
46 
51 template <class LinearOperator,
52  class Vector>
53 void bicg(LinearOperator& A,
54  LinearOperator& At,
55  Vector& x,
56  Vector& b);
57 
58 template <typename DerivedPolicy,
59  class LinearOperator,
60  class Vector,
61  class Monitor>
62 void bicg(const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
63  LinearOperator& A,
64  LinearOperator& At,
65  Vector& x,
66  Vector& b,
67  Monitor& monitor);
68 
73 template <class LinearOperator,
74  class Vector,
75  class Monitor>
76 void bicg(LinearOperator& A,
77  LinearOperator& At,
78  Vector& x,
79  Vector& b,
80  Monitor& monitor);
81 
82 template <typename DerivedPolicy,
83  class LinearOperator,
84  class Vector,
85  class Monitor,
86  class Preconditioner>
87 void bicg(const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
88  LinearOperator& A,
89  LinearOperator& At,
90  Vector& x,
91  Vector& b,
92  Monitor& monitor,
93  Preconditioner& M,
94  Preconditioner& Mt);
95 /* \endcond */
96 
160 template <class LinearOperator,
161  class Vector,
162  class Monitor,
163  class Preconditioner>
164 void bicg(LinearOperator& A,
165  LinearOperator& At,
166  Vector& x,
167  Vector& b,
168  Monitor& monitor,
169  Preconditioner& M,
170  Preconditioner& Mt);
174 } // end namespace krylov
175 } // end namespace cusp
176 
177 #include <cusp/krylov/detail/bicg.inl>
178 
void bicg(LinearOperator &A, LinearOperator &At, Vector &x, Vector &b, Monitor &monitor, Preconditioner &M, Preconditioner &Mt)
Biconjugate Gradient method.