milupHPC documentation
  • include
  • cuda_utils
linalg.cuh
Go to the documentation of this file.
1
10#ifndef MILUPHPC_LINALG_CUH
11#define MILUPHPC_LINALG_CUH
12
13#include "../parameter.h"
14#include "../../include/cuda_utils/cuda_utilities.cuh"
15
16class linalg {
17
18};
19
20namespace CudaUtils {
21
28 __device__ int sign(real x);
29
33 __device__ int stressIndex(int particleIndex, int row, int col);
34
41 __device__ void copyMatrix(real src[DIM][DIM], real dst[DIM][DIM]);
42
48 __device__ void transposeMatrix(real m[DIM][DIM]);
49
57 __device__ void multiplyMatrix(real A[DIM][DIM], real B[DIM][DIM], real C[DIM][DIM]);
58
66 __device__ void multiply(real A[][DIM], real B[][DIM], real C[][DIM]);
67
73 __device__ void identityMatrix(real A[DIM][DIM]);
74
84 __device__ int maxMatrix(real M[DIM][DIM], int *e, int *f, real *elmax);
85
97 __device__ void rotateMatrix(volatile real m[DIM][DIM], volatile real c, volatile real s, volatile int e,
98 volatile int f);
99
111 __device__ int calculateAllEigenvalues(real M[DIM][DIM], real eigenvalues[DIM], real v[DIM][DIM]);
112
121 __device__ real calculateMaxEigenvalue(real M[DIM][DIM]);
122
132 __device__ real det2x2(real a, real b, real c, real d);
133
141 __device__ int invertMatrix(real *m, real *inverted);
142}
143
144
145#endif //MILUPHPC_LINALG_CUH
linalg
Definition: linalg.cuh:16
CudaUtils
Definition: cuda_utilities.cuh:100
CudaUtils::calculateAllEigenvalues
__device__ int calculateAllEigenvalues(real M[DIM][DIM], real eigenvalues[DIM], real v[DIM][DIM])
Computes all eigenvalues and eigenvectors of the symmetric matrix M.
Definition: linalg.cu:159
CudaUtils::maxMatrix
__device__ int maxMatrix(real M[DIM][DIM], int *e, int *f, real *elmax)
Returns the indices of the greatest non-diagonal element of the matrix M.
Definition: linalg.cu:92
CudaUtils::stressIndex
__device__ int stressIndex(int particleIndex, int row, int col)
map [i][j] to [i*DIM*DIM+j] for the tensors
Definition: linalg.cu:11
CudaUtils::calculateMaxEigenvalue
__device__ real calculateMaxEigenvalue(real M[DIM][DIM])
Computes the eigenvalues of the symmetric matrix M.
Definition: linalg.cu:224
CudaUtils::transposeMatrix
__device__ void transposeMatrix(real m[DIM][DIM])
Transpose matrix.
Definition: linalg.cu:27
CudaUtils::copyMatrix
__device__ void copyMatrix(real src[DIM][DIM], real dst[DIM][DIM])
Deep copy of matrix.
Definition: linalg.cu:16
CudaUtils::sign
__device__ int sign(real x)
Get sign of floating point variable.
Definition: linalg.cu:5
CudaUtils::det2x2
__device__ real det2x2(real a, real b, real c, real d)
Determinant of a 2x2 matrix.
Definition: linalg.cu:275
CudaUtils::multiplyMatrix
__device__ void multiplyMatrix(real A[DIM][DIM], real B[DIM][DIM], real C[DIM][DIM])
Definition: linalg.cu:43
CudaUtils::invertMatrix
__device__ int invertMatrix(real *m, real *inverted)
Invert matrix.
Definition: linalg.cu:279
CudaUtils::rotateMatrix
__device__ void rotateMatrix(volatile real m[DIM][DIM], volatile real c, volatile real s, volatile int e, volatile int f)
Rotate matrix.
Definition: linalg.cu:118
CudaUtils::multiply
__device__ void multiply(real A[][DIM], real B[][DIM], real C[][DIM])
Definition: linalg.cu:69
CudaUtils::identityMatrix
__device__ void identityMatrix(real A[DIM][DIM])
Return identity matrix.
Definition: linalg.cu:80
real
double real
Definition: parameter.h:15
DIM
#define DIM
Dimension of the problem.
Definition: parameter.h:38

milupHPC - include/cuda_utils/linalg.cuh Source File
Generated on Wed Aug 31 2022 12:16:52 by Doxygen 1.9.3