10 #ifndef EXPONENTIAL_LINEAR_ALGEBRA_CUH 11 #define EXPONENTIAL_LINEAR_ALGEBRA_CUH 28 const double *
const __restrict__ A,
29 const double *
const __restrict__ V,
double *
const __restrict__ Av);
44 const double *
const __restrict__ A,
45 const double *
const __restrict__ V,
double *
const __restrict__ Av);
61 const double *
const __restrict__ A,
62 const double *
const __restrict__ V,
double *
const __restrict__ Av);
81 const double * __restrict__
scale,
82 const double * __restrict__ A,
83 double *
const __restrict__ * V,
double * __restrict__* Av);
103 const double* __restrict__
scale,
104 const double* __restrict__ A,
105 double*
const __restrict__ * V,
double* __restrict__ * Av);
122 const double* __restrict__ add,
123 const double* __restrict__ A,
124 double* __restrict__ V,
const double* __restrict__ Av);
145 const double* __restrict__ A,
147 double* __restrict__ Av,
148 const double* __restrict__ add,
const double* __restrict__ sub);
162 void scale (
const double* __restrict__ y0,
163 const double* __restrict__ y1,
double* __restrict__ sc);
174 void scale_init (
const double* __restrict__ y0,
double* __restrict__ sc);
188 double sc_norm(
const double* __restrict__ nums,
const double* __restrict__ sc);
198 double two_norm(
const double* __restrict__ v);
209 double normalize (
const double* __restrict__ v,
double* __restrict__ v_out);
221 double dotproduct(
const double* __restrict__ w,
const double* __restrict__ Vm);
233 void scale_subtract(
const double s,
const double* __restrict__ Vm,
double* __restrict__ w);
245 void scale_mult(
const double s,
const double* __restrict__ w,
double* __restrict__ Vm);
__device__ double two_norm(const double *__restrict__ v)
Computes and returns the two norm of a vector.
__device__ void matvec_n_by_m_scale(const int m, const double scale, const double *const __restrict__ A, const double *const __restrict__ V, double *const __restrict__ Av)
Matrix-vector multiplication of a matrix sized NSPxM and a vector of size Mx1 scaled by a specified f...
__device__ double normalize(const double *__restrict__ v, double *__restrict__ v_out)
Normalize the input vector using a 2-norm.
__device__ void matvec_m_by_m_plusequal(const int m, const double *const __restrict__ A, const double *const __restrict__ V, double *const __restrict__ Av)
Matrix-vector plus equals for a matrix of size MxM and vector of size Mx1. That is, it returns (A + I) * v.
__device__ void scale_subtract(const double s, const double *__restrict__ Vm, double *__restrict__ w)
Subtracts Vm scaled by s from w.
simple convenience file to include the correct solver properties file
__device__ void scale(const double *__restrict__ y0, const double *__restrict__ y1, double *__restrict__ sc)
Get scaling for weighted norm.
__device__ void matvec_m_by_m(const int m, const double *const __restrict__ A, const double *const __restrict__ V, double *const __restrict__ Av)
Matrix-vector multiplication of a matrix sized MxM and a vector Mx1.
__device__ double dotproduct(const double *__restrict__ w, const double *__restrict__ Vm)
Performs the dot product of the w (NSP x 1) vector with the given subspace vector (NSP x 1) ...
__device__ void scale_init(const double *__restrict__ y0, double *__restrict__ sc)
Get scaling for weighted norm for the initial timestep (used in krylov process)
__device__ void matvec_n_by_m_scale_special(const int m, const double *__restrict__ scale, const double *__restrict__ A, double *const __restrict__ *V, double *__restrict__ *Av)
Matrix-vector multiplication of a matrix sized NSPxM and a vector of size Mx1 scaled by a specified f...
__device__ void matvec_n_by_m_scale_special2(const int m, const double *__restrict__ scale, const double *__restrict__ A, double *const __restrict__ *V, double *__restrict__ *Av)
Matrix-vector multiplication of a matrix sized NSPxM and a vector of size Mx1 scaled by a specified f...
__device__ void matvec_n_by_m_scale_add_subtract(const int m, const double scale, const double *__restrict__ A, const double *V, double *__restrict__ Av, const double *__restrict__ add, const double *__restrict__ sub)
Matrix-vector multiplication of a matrix sized NSPxM and a vector of size Mx1 scaled by a specified f...
A file generated by Scons that specifies various options to the solvers.
__device__ double sc_norm(const double *__restrict__ nums, const double *__restrict__ sc)
Perform weighted norm.
__device__ void scale_mult(const double s, const double *__restrict__ w, double *__restrict__ Vm)
Sets Vm to s * w.
__device__ void matvec_n_by_m_scale_add(const int m, const double scale, const double *__restrict__ add, const double *__restrict__ A, double *__restrict__ V, const double *__restrict__ Av)
Matrix-vector multiplication of a matrix sized NSPxM and a vector of size Mx1 scaled by a specified f...