1 #ifndef __OPERATOR_KERNELS_H__ 2 #define __OPERATOR_KERNELS_H__ 17 (
int *,
size_t *,
int *,
size_t *,
int *,
size_t *,
int *,
int *,
18 int *,
int *,
double *,
int *,
int *,
double *,
double *);
21 (
int *,
size_t *,
int *,
size_t *,
int *,
int *,
int *,
int *,
22 int *,
double *,
int *,
size_t *,
size_t *,
size_t *,
double *,
double *);
25 (
int *,
size_t *,
int *,
size_t *,
int *,
size_t *,
size_t *,
int *,
26 double *,
int *,
double *,
double *);
30 double *
a,
double *
X,
double *
Y);
34 const size_t *
opInterval,
const double *
w,
const double *
x,
double *
y);
37 (
int *,
size_t *,
size_t *,
size_t *,
double *,
double *,
double *,
double *);
39 (
int *,
size_t *,
size_t *,
size_t *,
double *,
double *,
double *,
double *,
double *);
41 (
int *,
size_t *,
size_t *,
size_t *,
double *,
double *,
double *,
double *);
43 (
int *,
size_t *,
size_t *,
size_t *,
double *,
double *,
double *);
48 const double *
Y,
double *
Z);
52 double *
a,
double *
X);
63 (
int *,
size_t *,
size_t *,
size_t *,
double *,
double *,
double *,
double *);
65 (
int *,
size_t *,
size_t *,
size_t *,
double *,
double *,
double *,
double *);
67 (
int *,
size_t *,
size_t *,
size_t *,
double *,
double *);
69 (
int *,
size_t *,
size_t *,
size_t *,
double *,
double *);
83 double *
a,
double *
X,
double *
Y);
87 double *
a,
double *
W,
double *
X,
double *
Y,
double *
Z);
91 double *
V,
double *
W,
double *
X,
double *
Y,
double *
Z);
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t * numPoints
void const size_t const size_t const size_t const double * w
subroutine applyoperatorv(numDim, dimSizes, numComponents, numPoints, opDir, opInterval, numStencils, stencilSizes, stencilStarts, numValues, stencilWeights, stencilOffsets, stencilID, U, dU)
applyoperator applies an operator specified as a stencil set to the provided state data ...
subroutine assignmentyx(numDim, numPoints, bufferSize, bufferInterval, X, Y)
ASSIGNMENTYX point-wise operator performing Y = X.
subroutine ywxpy(numDim, numPoints, bufferSize, bufferInterval, W, X, Y)
YWXPY point-wise operator performing Y = WX + Y, where all are vectors.
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t * bufferSize
void size_t int size_t int size_t int int * stencilSizes
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t double double * X
void size_t size_t size_t double double double double double double * buf6
subroutine assignmentyabsx(numDim, numPoints, bufferSize, bufferInterval, X, Y)
ASSIGNMENTYABSX point-wise operator performing X = scalar a.
void size_t int size_t int size_t int int int int double int int double * uBuffer
subroutine zaxpy(N1, N2, N3, localInterval, a, X, Y, Z)
void size_t int size_t int * opDir
subroutine applyoperator(numDim, dimSizes, numComponents, numPoints, opDir, opInterval, numStencils, stencilSizes, stencilStarts, numValues, stencilWeights, stencilOffsets, stencilID, U, dU)
applyoperator applies an operator specified as a stencil set to the provided state data ...
subroutine determinant3x3(numPoints, bufferSize, bufferInterval, inMatrix, matrixDeterminant)
Computes determinant of 3x3 matrix.
void size_t int size_t int size_t int int int * stencilStarts
void size_t size_t size_t double double * buf2
void const size_t const size_t const size_t const double const double double * y
void size_t size_t size_t double double double double double double double double * metricSum
subroutine zwxpy(numDim, numPoints, bufferSize, bufferInterval, W, X, Y, Z)
ZWXPY point-wise operator performing Z = WX + Y, where all are vectors.
void size_t size_t double * inMatrix
void size_t size_t size_t double * buf1
subroutine yxy(numDim, numPoints, bufferSize, bufferInterval, X, Y)
YXY point-wise operator performing Y = XY (all vectors)
void size_t int size_t * numPointsBuffer
void size_t int size_t int size_t int int int int * numStencilWeights
subroutine veclen(numDim, numPoints, bufferSize, bufferInterval, numComp, V, lenV)
VECLEN point-wise operator returning the length of a numComp-dimensional vector.
void size_t size_t size_t double double double double * buf4
subroutine assignmentxa(numDim, numPoints, bufferSize, bufferInterval, a, X)
ASSIGNMENTXA point-wise operator performing X = scalar a.
subroutine applyoperatorblobs(numDim, dimSizes, numComponents, numPointsBuffer, opDir, numStencils, stencilSizes, stencilStarts, numStencilValues, stencilWeights, stencilOffsets, numPointsStencil, numPointsApply, stencilPoints, U, dU)
applyoperatorblobs applies an operator by applying each stencil in turn to all the points to which it...
void size_t size_t size_t double double double * buf3
void const size_t const size_t const size_t const double const double * x
void size_t size_t double double * matrixDeterminant
void size_t int size_t int size_t int int int int double int * stencilOffsets
void size_t size_t size_t double double * W
subroutine yaxpby(numDim, numPoints, bufferSize, bufferInterval, a, b, X, Y)
YAXPBY point-wise operator performing Y = aX + bY (scalar a,b)
subroutine zxdoty(numDim, numPoints, bufferSize, bufferInterval, numComponents, X, Y, Z)
ZXDOTY numComponents-vector inner product Z = X * Y.
void size_t int size_t int size_t * opInterval
void size_t int size_t int size_t int int int int double int int * stencilID
void size_t * bufferSizes
subroutine zawpxy(numDim, numPoints, bufferSize, bufferInterval, a, W, X, Y, Z)
ZAWPXY point-wise operator performing Z = aW + XY.
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t double * a
subroutine applysinglestencil(numDim, dimSizes, numComponents, numPointsBuffer, opDir, numPointsApply, applyPoints, stencilSize, stencilWeights, stencilOffsets, U, dU)
applysinglestencil applies an operator by applying a given stencil to the specified points ...
void size_t size_t size_t double double double double *void size_t size_t size_t double double double double double *void size_t size_t size_t double double double double *void size_t size_t size_t double double double *void const size_t const size_t const size_t const int const double const double double * Z
subroutine determinant2x2(numPoints, bufferSize, bufferInterval, inMatrix, matrixDeterminant)
Computes determinant of 2x2 matrix.
void size_t int size_t int size_t int int int int double int int double double * duBuffer
subroutine zwmxpy(numDim, numPoints, bufferSize, bufferInterval, W, X, Y, Z)
ZWMXPY point-wise operator performing Z = W(X+Y) where all are vectors.
subroutine yax(numDim, numPoints, bufferSize, bufferInterval, a, X, Y)
YAX point-wise operator performing Y = aX (scalar a)
void const size_t const size_t const size_t const int const double * V
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t double double double * Y
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t * bufferInterval
void const size_t const size_t const size_t const int * numComp
subroutine zxy(numDim, numPoints, bufferSize, bufferInterval, X, Y, Z)
ZXY point-wise operator performing Z = XY (all vectors)
subroutine zvwpxy(numDim, numPoints, bufferSize, bufferInterval, V, W, X, Y, Z)
ZVWPXY point-wise operator performing Z = VW + XY.
void size_t size_t size_t double double double double double double double * buf7
void size_t int size_t int size_t int int int int double * stencilWeights
void size_t int size_t int size_t int * numStencils
void size_t size_t size_t double double double double double * buf5
subroutine yaxpy(N1, N2, N3, localInterval, a, X, Y)
subroutine yaxm1(numDim, numPoints, bufferSize, bufferInterval, a, X, Y)
YAXM1 point-wise operator performing Y = a/X (scalar a)
void const size_t const size_t const size_t const int const double double * lenV
void size_t int * numComponents
subroutine metricsum4(numDim, numPoints, bufferSize, bufferInterval, buf1, buf2, buf3, buf4, buf5, buf6, buf7, metricSum)
Computes buf1*buf4 - buf2*buf3 + buf7*(buf5 - buf6)
void FC_MODULE(operators, applyoperator, OPERATORS, APPLYOPERATOR)(int *numDim
subroutine zaxpby(numDim, numPoints, bufferSize, bufferInterval, a, b, X, Y, Z)
ZAXPBY point-wise operator performing Z = aX + bY (scalar a,b)
subroutine xax(numDim, numPoints, bufferSize, bufferInterval, a, X)
XAX point-wise operator performing X = aX (scalar a)