ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
wf_op.h
Go to the documentation of this file.
1#ifndef SRC_PW_WF_MULTI_DEVICE_H
2#define SRC_PW_WF_MULTI_DEVICE_H
3
5#include "source_psi/psi.h"
6#include <complex>
7
8namespace hamilt {
9
10template <typename FPTYPE, typename Device>
11struct cal_sk_op {
42 void operator()(const Device* ctx,
43 const int& ik,
44 const int& ntype,
45 const int& nx,
46 const int& ny,
47 const int& nz,
48 const int& rho_nx,
49 const int& rho_ny,
50 const int& rho_nz,
51 const int& npw,
52 const int& npwx,
53 const int& fftny,
54 const int& eigts1_nc,
55 const int& eigts2_nc,
56 const int& eigts3_nc,
57 const int* atom_na,
58 const int* igl2isz,
59 const int* is2fftixy,
60 const FPTYPE& TWO_PI,
61 const FPTYPE* kvec_c,
62 const FPTYPE* atom_tau,
63 std::complex<FPTYPE>* eigts1,
64 std::complex<FPTYPE>* eigts2,
65 std::complex<FPTYPE>* eigts3,
66 std::complex<FPTYPE>* sk);
67};
68
69#if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
70template <typename FPTYPE>
71struct cal_sk_op<FPTYPE, base_device::DEVICE_GPU>
72{
73 void operator()(const base_device::DEVICE_GPU* ctx,
74 const int& ik,
75 const int& ntype,
76 const int& nx,
77 const int& ny,
78 const int& nz,
79 const int& rho_nx,
80 const int& rho_ny,
81 const int& rho_nz,
82 const int& npw,
83 const int& npwx,
84 const int& fftny,
85 const int& eigts1_nc,
86 const int& eigts2_nc,
87 const int& eigts3_nc,
88 const int* atom_na,
89 const int* igl2isz,
90 const int* is2fftixy,
91 const FPTYPE& TWO_PI,
92 const FPTYPE* kvec_c,
93 const FPTYPE* atom_tau,
94 std::complex<FPTYPE>* eigts1,
95 std::complex<FPTYPE>* eigts2,
96 std::complex<FPTYPE>* eigts3,
97 std::complex<FPTYPE>* sk);
98};
99#endif // __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
100} // namespace hamilt
101#endif //SRC_PW_WF_MULTI_DEVICE_H
Definition device.cpp:21
Definition hamilt.h:13
Definition wf_op.h:11
void operator()(const Device *ctx, const int &ik, const int &ntype, const int &nx, const int &ny, const int &nz, const int &rho_nx, const int &rho_ny, const int &rho_nz, const int &npw, const int &npwx, const int &fftny, const int &eigts1_nc, const int &eigts2_nc, const int &eigts3_nc, const int *atom_na, const int *igl2isz, const int *is2fftixy, const FPTYPE &TWO_PI, const FPTYPE *kvec_c, const FPTYPE *atom_tau, std::complex< FPTYPE > *eigts1, std::complex< FPTYPE > *eigts2, std::complex< FPTYPE > *eigts3, std::complex< FPTYPE > *sk)
The prestep of the calculation of getvnl for multi device.