DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
linearAlgebraOperationsDeviceKernels.h
Go to the documentation of this file.
1#ifndef linearAlgebraOperationsDeviceKernels_H
2#define linearAlgebraOperationsDeviceKernels_H
3#include <DeviceAPICalls.h>
6namespace dftfe
7{
9 {
10 template <typename ValueType1, typename ValueType2>
11 void
13 const dftfe::uInt BVec,
14 const ValueType1 *rotatedXBlockSP,
15 ValueType2 *X,
16 const dftfe::uInt startingDofId,
17 const dftfe::uInt startingVecId,
18 const dftfe::uInt N,
19 dftfe::utils::deviceStream_t &streamCompute);
20
21 template <typename ValueType1, typename ValueType2>
22 void
24 const dftfe::uInt B,
25 const dftfe::uInt D,
26 const ValueType1 *overlapMatrixBlock,
27 ValueType1 *overlapMatrixBlockDP,
28 ValueType2 *overlapMatrixBlockSP,
29 dftfe::utils::deviceStream_t &streamDataMove);
30
31 template <typename ValueType1, typename ValueType2>
32 void
33 computeDiagQTimesX(const ValueType1 *diagValues,
34 ValueType2 *X,
35 const dftfe::uInt N,
36 const dftfe::uInt M);
37
38 template <typename ValueType>
39 void
41 const dftfe::uInt numDofs,
42 const dftfe::uInt N,
43 const dftfe::uInt startingVecId,
44 const double *eigenValues,
45 const ValueType *X,
46 const ValueType *Y,
47 double *r);
48
49 template <typename ValueType>
50 void
52 const dftfe::uInt numDofs,
53 const dftfe::uInt N,
54 const dftfe::uInt startingVecId,
55 const ValueType *X,
56 double *residualSqDevice);
57
58
59 template <typename ValueType>
60 void
61 setZero(const dftfe::uInt BVec,
62 const dftfe::uInt M,
63 const dftfe::uInt N,
64 ValueType *yVec,
65 const dftfe::uInt startingXVecId);
66
67 } // namespace linearAlgebraOperationsDevice
68} // namespace dftfe
69#endif
Definition linearAlgebraOperationsDeviceKernels.h:9
void setZero(const dftfe::uInt BVec, const dftfe::uInt M, const dftfe::uInt N, ValueType *yVec, const dftfe::uInt startingXVecId)
void computeResidualDevice(const dftfe::uInt numVectors, const dftfe::uInt numDofs, const dftfe::uInt N, const dftfe::uInt startingVecId, const double *eigenValues, const ValueType *X, const ValueType *Y, double *r)
void addSubspaceRotatedBlockToX(const dftfe::uInt BDof, const dftfe::uInt BVec, const ValueType1 *rotatedXBlockSP, ValueType2 *X, const dftfe::uInt startingDofId, const dftfe::uInt startingVecId, const dftfe::uInt N, dftfe::utils::deviceStream_t &streamCompute)
void copyFromOverlapMatBlockToDPSPBlocks(const dftfe::uInt B, const dftfe::uInt D, const ValueType1 *overlapMatrixBlock, ValueType1 *overlapMatrixBlockDP, ValueType2 *overlapMatrixBlockSP, dftfe::utils::deviceStream_t &streamDataMove)
void computeGeneralisedResidualDevice(const dftfe::uInt numVectors, const dftfe::uInt numDofs, const dftfe::uInt N, const dftfe::uInt startingVecId, const ValueType *X, double *residualSqDevice)
void computeDiagQTimesX(const ValueType1 *diagValues, ValueType2 *X, const dftfe::uInt N, const dftfe::uInt M)
cudaStream_t deviceStream_t
Definition DeviceTypeConfig.cu.h:27
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10