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
4#include "source_psi/psi.h"
5#include <complex>
6
7namespace hamilt {
8
9template <typename FPTYPE, typename Device>
10struct cal_sk_op {
41 void operator()(const Device* ctx,
42 const int& ik,
43 const int& ntype,
44 const int& nx,
45 const int& ny,
46 const int& nz,
47 const int& rho_nx,
48 const int& rho_ny,
49 const int& rho_nz,
50 const int& npw,
51 const int& npwx,
52 const int& fftny,
53 const int& eigts1_nc,
54 const int& eigts2_nc,
55 const int& eigts3_nc,
56 const int* atom_na,
57 const int* igl2isz,
58 const int* is2fftixy,
59 const FPTYPE& TWO_PI,
60 const FPTYPE* kvec_c,
61 const FPTYPE* atom_tau,
62 std::complex<FPTYPE>* eigts1,
63 std::complex<FPTYPE>* eigts2,
64 std::complex<FPTYPE>* eigts3,
65 std::complex<FPTYPE>* sk);
66};
67
68#if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
69template <typename FPTYPE>
70struct cal_sk_op<FPTYPE, base_device::DEVICE_GPU>
71{
72 void operator()(const base_device::DEVICE_GPU* ctx,
73 const int& ik,
74 const int& ntype,
75 const int& nx,
76 const int& ny,
77 const int& nz,
78 const int& rho_nx,
79 const int& rho_ny,
80 const int& rho_nz,
81 const int& npw,
82 const int& npwx,
83 const int& fftny,
84 const int& eigts1_nc,
85 const int& eigts2_nc,
86 const int& eigts3_nc,
87 const int* atom_na,
88 const int* igl2isz,
89 const int* is2fftixy,
90 const FPTYPE& TWO_PI,
91 const FPTYPE* kvec_c,
92 const FPTYPE* atom_tau,
93 std::complex<FPTYPE>* eigts1,
94 std::complex<FPTYPE>* eigts2,
95 std::complex<FPTYPE>* eigts3,
96 std::complex<FPTYPE>* sk);
97};
98#endif // __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
99} // namespace hamilt
100#endif //SRC_PW_WF_MULTI_DEVICE_H
Definition device.cpp:21
Definition hamilt.h:12
Definition wf_op.h:10
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.