ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
phi_operator_gpu.h
Go to the documentation of this file.
1#pragma once
2#include <memory>
3#include <cuda_runtime.h>
4
6#include "gint_helper.cuh"
7#include "gint_gpu_vars.h"
8#include "cuda_mem_wrapper.h"
9
10namespace ModuleGint
11{
12
14{
15
16public:
17 PhiOperatorGpu(std::shared_ptr<const GintGpuVars> gint_gpu_vars, cudaStream_t stream = 0);
19
20 void set_bgrid_batch(std::shared_ptr<BatchBigGrid> bgrid_batch);
21
22 void set_phi(double* phi_d) const;
23
24 void set_phi_dphi(double* phi_d, double* dphi_x_d, double* dphi_y_d, double* dphi_z_d) const;
25
26 void set_ddphi(double* ddphi_xx_d, double* ddphi_xy_d, double* ddphi_xz_d,
27 double* ddphi_yy_d, double* ddphi_yz_d, double* ddphi_zz_d) const;
28
30 const double* vl_d,
31 const double dr3,
32 const double* phi_d,
33 double* result_d) const;
34
36 const double* phi_d,
37 const double* phi_vldr3_d,
38 HContainer<double>& hRGint,
39 double* hr_d) const;
40
42 const double* phi_d,
43 const double* dm_d,
44 const HContainer<double>& dm,
45 const bool is_symm,
46 double* phi_dm_d);
47
49 const double* phi_i_d,
50 const double* phi_j_d,
51 double* rho_d) const;
52
54 const double* phi_d,
55 const double* dphi_x_d,
56 const double* dphi_y_d,
57 const double* dphi_z_d,
58 double* fvl_d) const;
59
61 const double* phi_d,
62 const double* dphi_x_d,
63 const double* dphi_y_d,
64 const double* dphi_z_d,
65 double* svl_d) const;
66
67private:
68 std::shared_ptr<BatchBigGrid> bgrid_batch_;
69 std::shared_ptr<const GintGpuVars> gint_gpu_vars_;
70
71 // the number of meshgrids on a biggrid
73
75
76 cudaStream_t stream_ = 0;
77 cudaEvent_t event_;
78
79 // The first number in every group of two represents the number of atoms on that bigcell.
80 // The second number represents the cumulative number of atoms up to that bigcell.
82
83 // the iat of each atom
85
86 // atoms_bgrids_rcoords_ here represents the relative coordinates from the big grid to the atoms
88
89 // the start index of the phi array for each atom
91 // The length of phi for a single meshgrid on each big grid.
93 // The start index of the phi array for each big grid.
95 // Mapping of the index of meshgrid in the batch of biggrids to the index of meshgrid in the local cell
97
108};
109
110}
Definition cuda_mem_wrapper.h:8
Definition phi_operator_gpu.h:14
CudaMemWrapper< int > bgrids_phi_start_
Definition phi_operator_gpu.h:94
CudaMemWrapper< double * > gemm_C_
Definition phi_operator_gpu.h:106
CudaMemWrapper< int > gemm_m_
Definition phi_operator_gpu.h:98
CudaMemWrapper< int > atoms_iat_
Definition phi_operator_gpu.h:84
cudaStream_t stream_
Definition phi_operator_gpu.h:76
std::shared_ptr< BatchBigGrid > bgrid_batch_
Definition phi_operator_gpu.h:68
CudaMemWrapper< double3 > atoms_bgrids_rcoords_
Definition phi_operator_gpu.h:87
int mgrids_num_
Definition phi_operator_gpu.h:72
void phi_dot_phi(const double *phi_i_d, const double *phi_j_d, double *rho_d) const
CudaMemWrapper< int > atoms_phi_start_
Definition phi_operator_gpu.h:90
void phi_dot_dphi_r(const double *phi_d, const double *dphi_x_d, const double *dphi_y_d, const double *dphi_z_d, double *svl_d) const
CudaMemWrapper< int > bgrids_phi_len_
Definition phi_operator_gpu.h:92
CudaMemWrapper< int2 > atoms_num_info_
Definition phi_operator_gpu.h:81
void phi_mul_dm(const double *phi_d, const double *dm_d, const HContainer< double > &dm, const bool is_symm, double *phi_dm_d)
void set_bgrid_batch(std::shared_ptr< BatchBigGrid > bgrid_batch)
void set_ddphi(double *ddphi_xx_d, double *ddphi_xy_d, double *ddphi_xz_d, double *ddphi_yy_d, double *ddphi_yz_d, double *ddphi_zz_d) const
void set_phi(double *phi_d) const
void phi_mul_vldr3(const double *vl_d, const double dr3, const double *phi_d, double *result_d) const
CudaMemWrapper< int > gemm_ldb_
Definition phi_operator_gpu.h:102
CudaMemWrapper< const double * > gemm_A_
Definition phi_operator_gpu.h:104
PhiOperatorGpu(std::shared_ptr< const GintGpuVars > gint_gpu_vars, cudaStream_t stream=0)
int phi_len_
Definition phi_operator_gpu.h:74
CudaMemWrapper< int > mgrids_local_idx_batch_
Definition phi_operator_gpu.h:96
CudaMemWrapper< int > gemm_lda_
Definition phi_operator_gpu.h:101
void phi_mul_phi(const double *phi_d, const double *phi_vldr3_d, HContainer< double > &hRGint, double *hr_d) const
CudaMemWrapper< int > gemm_ldc_
Definition phi_operator_gpu.h:103
CudaMemWrapper< int > gemm_n_
Definition phi_operator_gpu.h:99
std::shared_ptr< const GintGpuVars > gint_gpu_vars_
Definition phi_operator_gpu.h:69
CudaMemWrapper< int > gemm_k_
Definition phi_operator_gpu.h:100
void phi_dot_dphi(const double *phi_d, const double *dphi_x_d, const double *dphi_y_d, const double *dphi_z_d, double *fvl_d) const
cudaEvent_t event_
Definition phi_operator_gpu.h:77
CudaMemWrapper< double > gemm_alpha_
Definition phi_operator_gpu.h:107
CudaMemWrapper< const double * > gemm_B_
Definition phi_operator_gpu.h:105
void set_phi_dphi(double *phi_d, double *dphi_x_d, double *dphi_y_d, double *dphi_z_d) const
Definition hcontainer.h:144
Definition batch_biggrid.cpp:4