(git:6768d83)
Loading...
Searching...
No Matches
rocm_backend Namespace Reference

Data Structures

class  context_info
 
class  gpu_vector
 
class  grid_info
 
struct  kernel_params
 Parameters of the collocate kernel. More...
 
struct  ldiffs_value
 Differences in angular momentum. More...
 
struct  orbital
 Orbital angular momentum. More...
 
class  smem_parameters
 
struct  smem_task
 data needed for calculating the coefficients, forces, and stress More...
 
struct  smem_task_reduced
 data needed for collocate and integrate kernels More...
 
struct  task_info
 Internal representation of a task. More...
 

Functions

template<typename T , bool IS_FUNC_AB>
__device__ __inline__ void block_to_cab (const kernel_params &params, const smem_task< T > &task, T *cab)
 Decontracts the subblock, going from spherical to cartesian harmonics.
 
template<typename T , bool IS_FUNC_AB>
__global__ __launch_bounds__ (64) void calculate_coefficients(const kernel_params dev_)
 
template<typename T , typename T3 , bool distributed__, bool orthorhombic_>
__global__ __launch_bounds__ (64) void collocate_kernel(const kernel_params dev_)
 
template<typename T >
__device__ __inline__ T warp_reduce (T *table, const int tid)
 
template<typename T , typename T3 , bool distributed__, bool orthorhombic_, int lbatch = 10>
__global__ __launch_bounds__ (64) void integrate_kernel(const kernel_params dev_)
 
__device__ __inline__ double fac (const int i)
 Factorial function, e.g. fac(5) = 5! = 120.
 
__host__ __device__ __inline__ int ncoset (const int l)
 Number of Cartesian orbitals up to given angular momentum quantum.
 
__host__ __device__ __inline__ int coset (int lx, int ly, int lz)
 Maps three angular momentum components to a single zero based index.
 
__device__ __inline__ orbital up (const int i, const orbital &a)
 Increase i'th component of given orbital angular momentum.
 
__inline__ __device__ orbital down (const int i, const orbital &a)
 Decrease i'th component of given orbital angular momentum.
 
__inline__ __device__ int idx (const orbital a)
 Return coset index of given orbital angular momentum.
 
__device__ __inline__ double power (const double x, const int expo)
 
template<typename T = double>
__device__ __inline__ void prep_term (const orbital a, const orbital b, const T value, const int n, T *cab)
 Adds given value to matrix element cab[idx(b)][idx(a)].
 
static void init_constant_memory ()
 Initializes the device's constant memory.
 
__inline__ __device__ double3 compute_coordinates (const double *__restrict__ dh_, const double x, const double y, const double z)
 
__inline__ __device__ float3 compute_coordinates (const float *__restrict__ dh_, const float x, const float y, const float z)
 
template<typename T >
__inline__ __device__ void compute_alpha (const smem_task< T > &task, T *__restrict__ alpha)
 Computes the polynomial expansion coefficients: (x-a)**lxa (x-b)**lxb -> sum_{ls} alpha(ls,lxa,lxb,1)*(x-p)**ls.
 
__host__ __inline__ __device__ void convert_to_lattice_coordinates (const double *dh_inv_, const double3 *__restrict__ const rp, double3 *__restrict__ rp_c)
 
__host__ __inline__ __device__ void convert_from_lattice_coordinates_to_cartesian (const double *__restrict__ dh_, const double3 *__restrict__ const rp, double3 *__restrict__ rp_c)
 
__host__ __inline__ __device__ void convert_to_lattice_coordinates (const float *dh_inv_, const float3 *__restrict__ const rp, float3 *__restrict__ rp_c)
 
__host__ __inline__ __device__ void convert_from_lattice_coordinates_to_cartesian (const float *__restrict__ dh_, const float3 *__restrict__ const rp, float3 *__restrict__ rp_c)
 
template<typename T , typename T3 , bool orthorhombic_>
__inline__ T compute_cube_properties (const T radius, const T *const __restrict__ dh_, const T *const __restrict__ dh_inv_, const T3 *__restrict__ rp, T3 *__restrict__ roffset, int3 *__restrict__ cubecenter, int3 *__restrict__ lb_cube, int3 *__restrict__ cube_size)
 
__inline__ __device__ void compute_window_size (const int *const grid_size, const int border_mask, const int *border_width, int3 *const window_size, int3 *const window_shift)
 
template<typename T >
__device__ static __inline__ void cab_to_cxyz (const smem_task< T > &task, const T *__restrict__ alpha, const T *__restrict__ cab, T *__restrict__ cxyz)
 Transforms coefficients C_ab into C_xyz.
 
template<typename T >
__device__ static __inline__ void cxyz_to_cab (const smem_task< T > &task, const T *__restrict__ alpha, const T *__restrict__ cxyz, T *__restrict__ cab)
 Transforms coefficients C_xyz into C_ab.
 
template<typename T , typename T3 >
__device__ __inline__ void fill_smem_task_reduced (const kernel_params &dev, const int task_id, smem_task_reduced< T, T3 > &task)
 Copies a task from global to shared memory.
 
template<typename T >
__device__ __inline__ void fill_smem_task_coef (const kernel_params &dev, const int task_id, smem_task< T > &task)
 Copies a task from global to shared memory and does precomputations.
 
template<typename T >
__device__ __inline__ void prepare_pab_AB (const orbital a, const orbital b, const T pab_val, const int n, T *cab)
 Implementation of function GRID_FUNC_AB, ie. identity transformation.
 
template<typename T >
__device__ __inline__ void prepare_pab_DADB (const orbital a, const orbital b, const T zeta, const T zetb, const T pab_val, const int n, T *cab)
 Implementation of function GRID_FUNC_DADB.
 
template<typename T >
__device__ void prepare_pab_ADBmDAB (const int idir, const orbital a, const orbital b, const T zeta, const T zetb, const T pab_val, const int n, T *cab)
 Implementation of function GRID_FUNC_ADBmDAB_{X,Y,Z}.
 
template<typename T >
__device__ void prepare_pab_ARDBmDARB (const int idir, const int ir, const orbital a, const orbital b, const T zeta, const T zetb, const T pab_val, const int n, T *cab)
 Implementation of function GRID_FUNC_ARDBmDARB_{X,Y,Z}{X,Y,Z}.
 
template<typename T >
__device__ void prepare_pab_DABpADB (const int idir, const orbital a, const orbital b, const T zeta, const T zetb, const T pab_val, const int n, T *cab)
 Implementation of function GRID_FUNC_DABpADB_{X,Y,Z}.
 
template<typename T >
__device__ __inline__ void prepare_pab_Di (const int ider, const orbital a, const orbital b, const T zeta, const T zetb, const T pab_val, const int n, T *cab)
 Implementation of function GRID_FUNC_{DX,DY,DZ}.
 
template<typename T >
__device__ __inline__ void oneterm_dijdij (const int idir, const T func_a, const orbital a, const orbital b, const T zetb, const int n, T *cab)
 Helper for grid_prepare_pab_DiDj.
 
template<typename T >
__device__ __inline__ void prepare_pab_DiDj (const int ider1, const int ider2, const orbital a, const orbital b, const T zeta, const T zetb, const T pab_val, const int n, T *cab)
 Implementation of function GRID_FUNC_{DXDY,DYDZ,DZDX}.
 
template<typename T >
__device__ void oneterm_diidii (const int idir, const T func_a, const orbital a, const orbital b, const T zetb, const int n, T *cab)
 Helper for grid_prepare_pab_Di2.
 
template<typename T >
__device__ __inline__ void prepare_pab_Di2 (const int ider, const orbital a, const orbital b, const T zeta, const T zetb, const T pab_val, const int n, T *cab)
 Implementation of function GRID_FUNC_{DXDX,DYDY,DZDZ}.
 
template<typename T >
__device__ __inline__ void prepare_pab (const enum grid_func func, const orbital a, const orbital b, const T zeta, const T zetb, const T pab_val, const int n, T *cab)
 Transforms a given element of the density matrix according to func.
 
ldiffs_value prepare_get_ldiffs (const enum grid_func func)
 Returns difference in angular momentum range for given func.
 
template<typename T >
__device__ __inline__ T get_term (const orbital &a, const orbital &b, const int n, const T *cab)
 Returns matrix element cab[idx(b)][idx(a)].
 
template<typename T >
__device__ __inline__ T get_force_a_normal (const orbital &a, const orbital &b, const int i, const T zeta, const int n, const T *cab)
 Returns i'th component of force on atom a for compute_tau=false.
 
template<bool compute_tau, typename T >
__device__ __inline__ double get_force_a (const orbital &a, const orbital &b, const int i, const T zeta, const T zetb, const int n, const T *cab)
 Returns i'th component of force on atom a.
 
template<typename T >
__device__ __inline__ double get_force_b_normal (const orbital &a, const orbital &b, const int i, const T zetb, const T rab[3], const int n, const T *cab)
 Returns i'th component of force on atom b for compute_tau=false.
 
template<bool compute_tau, typename T >
__device__ __inline__ T get_force_b (const orbital &a, const orbital &b, const int i, const T zeta, const T zetb, const T rab[3], const int n, const T *cab)
 Returns i'th component of force on atom b.
 
template<typename T >
__device__ __inline__ double get_virial_a_normal (const orbital &a, const orbital &b, const int i, const int j, const T zeta, const int n, const T *cab)
 Returns element i,j of virial on atom a for compute_tau=false.
 
template<bool compute_tau, typename T >
__device__ __inline__ T get_virial_a (const orbital &a, const orbital &b, const int i, const int j, const T zeta, const T zetb, const int n, const T *cab)
 Returns element i,j of virial on atom a.
 
template<typename T >
__device__ __inline__ double get_virial_b_normal (const orbital &a, const orbital &b, const int i, const int j, const T zetb, const T rab[3], const int n, const T *cab)
 Returns element i,j of virial on atom b for compute_tau=false.
 
template<bool compute_tau, typename T >
__device__ __inline__ double get_virial_b (const orbital &a, const orbital &b, const int i, const int j, const T zeta, const T zetb, const T rab[3], const int n, const T *cab)
 Returns element i,j of virial on atom b.
 
template<bool compute_tau, typename T >
__device__ __inline__ T get_hab (const orbital &a, const orbital &b, const T zeta, const T zetb, const int n, const T *cab)
 Returns element i,j of hab matrix.
 
ldiffs_value process_get_ldiffs (bool calculate_forces, bool calculate_virial, bool compute_tau)
 Returns difference in angular momentum range for given flags.
 

Variables

__constant__ orbital coset_inv [1330]
 
__constant__ int binomial_coef [19][19]
 

Function Documentation

◆ block_to_cab()

template<typename T , bool IS_FUNC_AB>
__device__ __inline__ void rocm_backend::block_to_cab ( const kernel_params params,
const smem_task< T > &  task,
T *  cab 
)

Decontracts the subblock, going from spherical to cartesian harmonics.

Definition at line 35 of file grid_gpu_collocate.cu.

Here is the call graph for this function:

◆ __launch_bounds__() [1/3]

template<typename T , bool IS_FUNC_AB>
__global__ rocm_backend::__launch_bounds__ ( 64  ) const

Definition at line 83 of file grid_gpu_collocate.cu.

Here is the call graph for this function:

◆ __launch_bounds__() [2/3]

template<typename T , typename T3 , bool distributed__, bool orthorhombic_>
__global__ rocm_backend::__launch_bounds__ ( 64  ) const

Definition at line 139 of file grid_gpu_collocate.cu.

Here is the call graph for this function:

◆ warp_reduce()

template<typename T >
__device__ __inline__ T rocm_backend::warp_reduce ( T *  table,
const int  tid 
)

Definition at line 35 of file grid_gpu_integrate.cu.

◆ __launch_bounds__() [3/3]

template<typename T , typename T3 , bool distributed__, bool orthorhombic_, int lbatch = 10>
__global__ rocm_backend::__launch_bounds__ ( 64  ) const

Cuda kernel for calcualting the coefficients of a potential (density, etc...) for a given pair of gaussian basis sets

We compute the discretized version of the following integral

$$\int _\infty ^\infty V_{ijk} P^\alpha_iP^beta_j P ^ \gamma _ k Exp(- \eta |r_{ijk} - r_c|^2)$$

where in practice the summation is over a finite domain. The discrete form has this shape

$$ \sum_{ijk < dmoain} V_{ijk} (x_i - x_c)^\alpha (y_j - y_c)^\beta (z_k - z_c) ^ \gamma Exp(- \eta |r_{ijk} - r_c|^2) $$

where $0 \le \alpha + \beta + \gamma \le lmax$

It is formely the same operation than collocate (from a discrete point of view) but the implementation differ because of technical reasons.

So most of the code is the same except the core of the routine that is specialized to the integration.

Definition at line 253 of file grid_gpu_integrate.cu.

Here is the call graph for this function:

◆ fac()

__device__ __inline__ double rocm_backend::fac ( const int  i)

Factorial function, e.g. fac(5) = 5! = 120.

Author
Ole Schuett

Definition at line 138 of file grid_gpu_internal_header.h.

◆ ncoset()

__host__ __device__ __inline__ int rocm_backend::ncoset ( const int  l)

Number of Cartesian orbitals up to given angular momentum quantum.

Author
Ole Schuett

Definition at line 163 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ coset()

__host__ __device__ __inline__ int rocm_backend::coset ( int  lx,
int  ly,
int  lz 
)

Maps three angular momentum components to a single zero based index.

Definition at line 175 of file grid_gpu_internal_header.h.

◆ up()

__device__ __inline__ orbital rocm_backend::up ( const int  i,
const orbital a 
)

Increase i'th component of given orbital angular momentum.

Definition at line 187 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ down()

__inline__ __device__ orbital rocm_backend::down ( const int  i,
const orbital a 
)

Decrease i'th component of given orbital angular momentum.

Definition at line 196 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ idx()

__inline__ __device__ int rocm_backend::idx ( const orbital  a)

Return coset index of given orbital angular momentum.

Definition at line 205 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ power()

__device__ __inline__ double rocm_backend::power ( const double  x,
const int  expo 
)

Definition at line 209 of file grid_gpu_internal_header.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ prep_term()

template<typename T = double>
__device__ __inline__ void rocm_backend::prep_term ( const orbital  a,
const orbital  b,
const T  value,
const int  n,
T *  cab 
)

Adds given value to matrix element cab[idx(b)][idx(a)].

Definition at line 220 of file grid_gpu_internal_header.h.

Here is the call graph for this function:

◆ init_constant_memory()

static void rocm_backend::init_constant_memory ( )
inlinestatic

Initializes the device's constant memory.

Author
Ole Schuett

Definition at line 229 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ compute_coordinates() [1/2]

__inline__ __device__ double3 rocm_backend::compute_coordinates ( const double *__restrict__  dh_,
const double  x,
const double  y,
const double  z 
)

Definition at line 282 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ compute_coordinates() [2/2]

__inline__ __device__ float3 rocm_backend::compute_coordinates ( const float *__restrict__  dh_,
const float  x,
const float  y,
const float  z 
)

Definition at line 295 of file grid_gpu_internal_header.h.

◆ compute_alpha()

template<typename T >
__inline__ __device__ void rocm_backend::compute_alpha ( const smem_task< T > &  task,
T *__restrict__  alpha 
)

Computes the polynomial expansion coefficients: (x-a)**lxa (x-b)**lxb -> sum_{ls} alpha(ls,lxa,lxb,1)*(x-p)**ls.

Definition at line 314 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ convert_to_lattice_coordinates() [1/2]

__host__ __inline__ __device__ void rocm_backend::convert_to_lattice_coordinates ( const double *  dh_inv_,
const double3 *__restrict__ const  rp,
double3 *__restrict__  rp_c 
)

Definition at line 350 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ convert_from_lattice_coordinates_to_cartesian() [1/2]

__host__ __inline__ __device__ void rocm_backend::convert_from_lattice_coordinates_to_cartesian ( const double *__restrict__  dh_,
const double3 *__restrict__ const  rp,
double3 *__restrict__  rp_c 
)

Definition at line 359 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ convert_to_lattice_coordinates() [2/2]

__host__ __inline__ __device__ void rocm_backend::convert_to_lattice_coordinates ( const float *  dh_inv_,
const float3 *__restrict__ const  rp,
float3 *__restrict__  rp_c 
)

Definition at line 368 of file grid_gpu_internal_header.h.

◆ convert_from_lattice_coordinates_to_cartesian() [2/2]

__host__ __inline__ __device__ void rocm_backend::convert_from_lattice_coordinates_to_cartesian ( const float *__restrict__  dh_,
const float3 *__restrict__ const  rp,
float3 *__restrict__  rp_c 
)

Definition at line 377 of file grid_gpu_internal_header.h.

◆ compute_cube_properties()

template<typename T , typename T3 , bool orthorhombic_>
__inline__ T rocm_backend::compute_cube_properties ( const T  radius,
const T *const __restrict__  dh_,
const T *const __restrict__  dh_inv_,
const T3 *__restrict__  rp,
T3 *__restrict__  roffset,
int3 *__restrict__  cubecenter,
int3 *__restrict__  lb_cube,
int3 *__restrict__  cube_size 
)

Definition at line 386 of file grid_gpu_internal_header.h.

Here is the call graph for this function:

◆ compute_window_size()

__inline__ __device__ void rocm_backend::compute_window_size ( const int *const  grid_size,
const int  border_mask,
const int *  border_width,
int3 *const  window_size,
int3 *const  window_shift 
)

Definition at line 520 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ cab_to_cxyz()

template<typename T >
__device__ static __inline__ void rocm_backend::cab_to_cxyz ( const smem_task< T > &  task,
const T *__restrict__  alpha,
const T *__restrict__  cab,
T *__restrict__  cxyz 
)
static

Transforms coefficients C_ab into C_xyz.

Definition at line 552 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ cxyz_to_cab()

template<typename T >
__device__ static __inline__ void rocm_backend::cxyz_to_cab ( const smem_task< T > &  task,
const T *__restrict__  alpha,
const T *__restrict__  cxyz,
T *__restrict__  cab 
)
static

Transforms coefficients C_xyz into C_ab.

Definition at line 603 of file grid_gpu_internal_header.h.

◆ fill_smem_task_reduced()

template<typename T , typename T3 >
__device__ __inline__ void rocm_backend::fill_smem_task_reduced ( const kernel_params dev,
const int  task_id,
smem_task_reduced< T, T3 > &  task 
)

Copies a task from global to shared memory.

Definition at line 655 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ fill_smem_task_coef()

template<typename T >
__device__ __inline__ void rocm_backend::fill_smem_task_coef ( const kernel_params dev,
const int  task_id,
smem_task< T > &  task 
)

Copies a task from global to shared memory and does precomputations.

Definition at line 695 of file grid_gpu_internal_header.h.

Here is the caller graph for this function:

◆ prepare_pab_AB()

template<typename T >
__device__ __inline__ void rocm_backend::prepare_pab_AB ( const orbital  a,
const orbital  b,
const T  pab_val,
const int  n,
T *  cab 
)

Implementation of function GRID_FUNC_AB, ie. identity transformation.

Definition at line 28 of file grid_gpu_prepare_pab.h.

◆ prepare_pab_DADB()

template<typename T >
__device__ __inline__ void rocm_backend::prepare_pab_DADB ( const orbital  a,
const orbital  b,
const T  zeta,
const T  zetb,
const T  pab_val,
const int  n,
T *  cab 
)

Implementation of function GRID_FUNC_DADB.

Definition at line 41 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ prepare_pab_ADBmDAB()

template<typename T >
__device__ void rocm_backend::prepare_pab_ADBmDAB ( const int  idir,
const orbital  a,
const orbital  b,
const T  zeta,
const T  zetb,
const T  pab_val,
const int  n,
T *  cab 
)

Implementation of function GRID_FUNC_ADBmDAB_{X,Y,Z}.

Definition at line 62 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ prepare_pab_ARDBmDARB()

template<typename T >
__device__ void rocm_backend::prepare_pab_ARDBmDARB ( const int  idir,
const int  ir,
const orbital  a,
const orbital  b,
const T  zeta,
const T  zetb,
const T  pab_val,
const int  n,
T *  cab 
)

Implementation of function GRID_FUNC_ARDBmDARB_{X,Y,Z}{X,Y,Z}.

Definition at line 83 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ prepare_pab_DABpADB()

template<typename T >
__device__ void rocm_backend::prepare_pab_DABpADB ( const int  idir,
const orbital  a,
const orbital  b,
const T  zeta,
const T  zetb,
const T  pab_val,
const int  n,
T *  cab 
)

Implementation of function GRID_FUNC_DABpADB_{X,Y,Z}.

Author
Ole Schuett

Definition at line 108 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ prepare_pab_Di()

template<typename T >
__device__ __inline__ void rocm_backend::prepare_pab_Di ( const int  ider,
const orbital  a,
const orbital  b,
const T  zeta,
const T  zetb,
const T  pab_val,
const int  n,
T *  cab 
)

Implementation of function GRID_FUNC_{DX,DY,DZ}.

Author
Ole Schuett

Definition at line 131 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ oneterm_dijdij()

template<typename T >
__device__ __inline__ void rocm_backend::oneterm_dijdij ( const int  idir,
const T  func_a,
const orbital  a,
const orbital  b,
const T  zetb,
const int  n,
T *  cab 
)

Helper for grid_prepare_pab_DiDj.

Definition at line 155 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ prepare_pab_DiDj()

template<typename T >
__device__ __inline__ void rocm_backend::prepare_pab_DiDj ( const int  ider1,
const int  ider2,
const orbital  a,
const orbital  b,
const T  zeta,
const T  zetb,
const T  pab_val,
const int  n,
T *  cab 
)

Implementation of function GRID_FUNC_{DXDY,DYDZ,DZDX}.

Author
Ole Schuett

Definition at line 185 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ oneterm_diidii()

template<typename T >
__device__ void rocm_backend::oneterm_diidii ( const int  idir,
const T  func_a,
const orbital  a,
const orbital  b,
const T  zetb,
const int  n,
T *  cab 
)

Helper for grid_prepare_pab_Di2.

Author
Ole Schuett

Definition at line 212 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ prepare_pab_Di2()

template<typename T >
__device__ __inline__ void rocm_backend::prepare_pab_Di2 ( const int  ider,
const orbital  a,
const orbital  b,
const T  zeta,
const T  zetb,
const T  pab_val,
const int  n,
T *  cab 
)

Implementation of function GRID_FUNC_{DXDX,DYDY,DZDZ}.

Definition at line 227 of file grid_gpu_prepare_pab.h.

Here is the call graph for this function:

◆ prepare_pab()

template<typename T >
__device__ __inline__ void rocm_backend::prepare_pab ( const enum grid_func  func,
const orbital  a,
const orbital  b,
const T  zeta,
const T  zetb,
const T  pab_val,
const int  n,
T *  cab 
)

Transforms a given element of the density matrix according to func.

Parameters
funcTransformation function to apply, one of GRID_FUNC_*.
{a,b}Orbital angular momenta.
zet_{a,b}Gaussian exponents.
pab_valInput matrix element of pab.
nLeading dimensions of output matrix cab.
cabOutput matrix.

Definition at line 255 of file grid_gpu_prepare_pab.h.

Here is the caller graph for this function:

◆ prepare_get_ldiffs()

ldiffs_value rocm_backend::prepare_get_ldiffs ( const enum grid_func  func)
inline

Returns difference in angular momentum range for given func.

Author
Ole Schuett

Definition at line 347 of file grid_gpu_prepare_pab.h.

Here is the caller graph for this function:

◆ get_term()

template<typename T >
__device__ __inline__ T rocm_backend::get_term ( const orbital a,
const orbital b,
const int  n,
const T *  cab 
)

Returns matrix element cab[idx(b)][idx(a)].

Author
Ole Schuett

Definition at line 27 of file grid_gpu_process_vab.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_force_a_normal()

template<typename T >
__device__ __inline__ T rocm_backend::get_force_a_normal ( const orbital a,
const orbital b,
const int  i,
const T  zeta,
const int  n,
const T *  cab 
)

Returns i'th component of force on atom a for compute_tau=false.

Author
Ole Schuett

Definition at line 37 of file grid_gpu_process_vab.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_force_a()

template<bool compute_tau, typename T >
__device__ __inline__ double rocm_backend::get_force_a ( const orbital a,
const orbital b,
const int  i,
const T  zeta,
const T  zetb,
const int  n,
const T *  cab 
)

Returns i'th component of force on atom a.

Author
Ole Schuett

Definition at line 51 of file grid_gpu_process_vab.h.

Here is the call graph for this function:

◆ get_force_b_normal()

template<typename T >
__device__ __inline__ double rocm_backend::get_force_b_normal ( const orbital a,
const orbital b,
const int  i,
const T  zetb,
const T  rab[3],
const int  n,
const T *  cab 
)

Returns i'th component of force on atom b for compute_tau=false.

Author
Ole Schuett

Definition at line 81 of file grid_gpu_process_vab.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_force_b()

template<bool compute_tau, typename T >
__device__ __inline__ T rocm_backend::get_force_b ( const orbital a,
const orbital b,
const int  i,
const T  zeta,
const T  zetb,
const T  rab[3],
const int  n,
const T *  cab 
)

Returns i'th component of force on atom b.

Author
Ole Schuett

Definition at line 94 of file grid_gpu_process_vab.h.

Here is the call graph for this function:

◆ get_virial_a_normal()

template<typename T >
__device__ __inline__ double rocm_backend::get_virial_a_normal ( const orbital a,
const orbital b,
const int  i,
const int  j,
const T  zeta,
const int  n,
const T *  cab 
)

Returns element i,j of virial on atom a for compute_tau=false.

Author
Ole Schuett

Definition at line 125 of file grid_gpu_process_vab.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_virial_a()

template<bool compute_tau, typename T >
__device__ __inline__ T rocm_backend::get_virial_a ( const orbital a,
const orbital b,
const int  i,
const int  j,
const T  zeta,
const T  zetb,
const int  n,
const T *  cab 
)

Returns element i,j of virial on atom a.

Author
Ole Schuett

Definition at line 136 of file grid_gpu_process_vab.h.

Here is the call graph for this function:

◆ get_virial_b_normal()

template<typename T >
__device__ __inline__ double rocm_backend::get_virial_b_normal ( const orbital a,
const orbital b,
const int  i,
const int  j,
const T  zetb,
const T  rab[3],
const int  n,
const T *  cab 
)

Returns element i,j of virial on atom b for compute_tau=false.

Author
Ole Schuett

Definition at line 168 of file grid_gpu_process_vab.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_virial_b()

template<bool compute_tau, typename T >
__device__ __inline__ double rocm_backend::get_virial_b ( const orbital a,
const orbital b,
const int  i,
const int  j,
const T  zeta,
const T  zetb,
const T  rab[3],
const int  n,
const T *  cab 
)

Returns element i,j of virial on atom b.

Author
Ole Schuett

Definition at line 186 of file grid_gpu_process_vab.h.

Here is the call graph for this function:

◆ get_hab()

template<bool compute_tau, typename T >
__device__ __inline__ T rocm_backend::get_hab ( const orbital a,
const orbital b,
const T  zeta,
const T  zetb,
const int  n,
const T *  cab 
)

Returns element i,j of hab matrix.

Author
Ole Schuett

Definition at line 217 of file grid_gpu_process_vab.h.

Here is the call graph for this function:

◆ process_get_ldiffs()

ldiffs_value rocm_backend::process_get_ldiffs ( bool  calculate_forces,
bool  calculate_virial,
bool  compute_tau 
)
inline

Returns difference in angular momentum range for given flags.

Definition at line 241 of file grid_gpu_process_vab.h.

Here is the caller graph for this function:

Variable Documentation

◆ coset_inv

__constant__ orbital rocm_backend::coset_inv[1330]

Definition at line 62 of file grid_gpu_internal_header.h.

◆ binomial_coef

__constant__ int rocm_backend::binomial_coef[19][19]

Definition at line 63 of file grid_gpu_internal_header.h.