-
Notifications
You must be signed in to change notification settings - Fork 34
/
FEBasisOperationsKernelsInternal.h
89 lines (81 loc) · 3.91 KB
/
FEBasisOperationsKernelsInternal.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// ---------------------------------------------------------------------
//
// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
// authors.
//
// This file is part of the DFT-FE code.
//
// The DFT-FE code is free software; you can use it, redistribute
// it, and/or modify it under the terms of the GNU Lesser General
// Public License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// The full text of the license can be found in the file LICENSE at
// the top level of the DFT-FE distribution.
//
// ---------------------------------------------------------------------
#ifndef dftfeFEBasisOperationsKernelsInternal_h
#define dftfeFEBasisOperationsKernelsInternal_h
#include <TypeConfig.h>
#include <BLASWrapper.h>
#ifdef DFTFE_WITH_DEVICE
# include <DeviceAPICalls.h>
# include <DeviceTypeConfig.h>
# include <DeviceKernelLauncherConstants.h>
# include <DeviceDataTypeOverloads.h>
#endif // DFTFE_WITH_DEVICE
namespace dftfe
{
namespace basis
{
namespace FEBasisOperationsKernelsInternal
{
/**
* @brief rehsape gradient data from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
* d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
* @param[in] numVecs number of vectors.
* @param[in] numQuads number of quadrature points per cell.
* @param[in] numCells number of locally owned cells.
* @param[in] copyFromVec source data pointer.
* @param[out] copyToVec destination data pointer.
*/
template <typename ValueType>
void
reshapeFromNonAffineLayoutDevice(const dftfe::size_type numVecs,
const dftfe::size_type numQuads,
const dftfe::size_type numCells,
const ValueType * copyFromVec,
ValueType * copyToVec);
template <typename ValueType>
void
reshapeFromNonAffineLayoutHost(const dftfe::size_type numVecs,
const dftfe::size_type numQuads,
const dftfe::size_type numCells,
const ValueType * copyFromVec,
ValueType * copyToVec);
/**
* @brief rehsape gradient data to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
* d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
* @param[in] numVecs number of vectors.
* @param[in] numQuads number of quadrature points per cell.
* @param[in] numCells number of locally owned cells.
* @param[in] copyFromVec source data pointer.
* @param[out] copyToVec destination data pointer.
*/
template <typename ValueType>
void
reshapeToNonAffineLayoutDevice(const dftfe::size_type numVecs,
const dftfe::size_type numQuads,
const dftfe::size_type numCells,
const ValueType * copyFromVec,
ValueType * copyToVec);
template <typename ValueType>
void
reshapeToNonAffineLayoutHost(const dftfe::size_type numVecs,
const dftfe::size_type numQuads,
const dftfe::size_type numCells,
const ValueType * copyFromVec,
ValueType * copyToVec);
} // namespace FEBasisOperationsKernelsInternal
} // namespace basis
} // namespace dftfe
#endif // dftfeFEBasisOperationsKernelsInternal_h