(git:3add494)
grid_dgemm_context.c File Reference
#include <math.h>
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../common/grid_library.h"
#include "grid_dgemm_collocate.h"
#include "grid_dgemm_collocation_integration.h"
#include "grid_dgemm_context.h"
#include "grid_dgemm_private_header.h"
#include "grid_dgemm_task_list.h"
#include "grid_dgemm_tensor_local.h"
#include "grid_dgemm_utils.h"

Go to the source code of this file.

Functions

void return_dh (void *const ptr, const int level, double *const dh)
 
void return_dh_inv (void *const ptr, const int level, double *const dh_inv)
 
int return_num_devs (void *const ptr)
 
int return_device_id (void *const ptr, const int device)
 
int is_grid_orthorhombic (void *const ptr)
 
void update_queue_length (void *const ptr, const int queue_length)
 
void update_atoms_position (const int natoms, const double atoms_positions[natoms][3], grid_context *data)
 
void update_atoms_kinds (const int natoms, const int *atoms_kinds, grid_context *data)
 
void update_block_offsets (const int nblocks, const int *const block_offsets, grid_context *data)
 
void update_basis_set (const int nkinds, const grid_basis_set **const basis_sets, grid_context *data)
 
void update_task_lists (const int nlevels, const int ntasks, const int *const level_list, const int *const iatom_list, const int *const jatom_list, const int *const iset_list, const int *const jset_list, const int *const ipgf_list, const int *const jpgf_list, const int *const border_mask_list, const int *block_num_list, const double *const radius_list, const double rab_list[ntasks][3], grid_context *ctx)
 
void update_layouts (const int nlevels, const int npts_global[nlevels][3], const int npts_local[nlevels][3], const int shift_local[nlevels][3], const int border_width[nlevels][3], const double dh[nlevels][3][3], const double dh_inv[nlevels][3][3], grid_context *ctx)
 
void update_grid (const int nlevels, grid_context *ctx)
 
void * create_grid_context_dgemm (const bool orthorhombic, const int ntasks, const int nlevels, const int natoms, const int nkinds, const int nblocks, const int *block_offsets, const double atom_positions[natoms][3], const int *const atom_kinds, const grid_basis_set **const basis_sets, const int *const level_list, const int *const iatom_list, const int *jatom_list, const int *const iset_list, const int *const jset_list, const int *const ipgf_list, const int *const jpgf_list, const int *const border_mask_list, const int *block_num_list, const double *const radius_list, const double rab_list[ntasks][3], const int npts_global[nlevels][3], const int npts_local[nlevels][3], const int shift_local[nlevels][3], const int border_width[nlevels][3], const double dh[nlevels][3][3], const double dh_inv[nlevels][3][3])
 
void update_grid_context_dgemm (const bool orthorhombic, const int ntasks, const int nlevels, const int natoms, const int nkinds, const int nblocks, const int *block_offsets, const double atom_positions[natoms][3], const int *const atom_kinds, const grid_basis_set **const basis_sets, const int *const level_list, const int *const iatom_list, const int *jatom_list, const int *const iset_list, const int *const jset_list, const int *const ipgf_list, const int *const jpgf_list, const int *const border_mask_list, const int *block_num_list, const double *const radius_list, const double rab_list[ntasks][3], const int npts_global[nlevels][3], const int npts_local[nlevels][3], const int shift_local[nlevels][3], const int border_width[nlevels][3], const double dh[nlevels][3][3], const double dh_inv[nlevels][3][3], void *ptr)
 
void initialize_grid_context_on_gpu (void *ptr, const int number_of_devices, const int *device_id)
 
void destroy_grid_context_dgemm (void *ptr)
 
void apply_cutoff (void *ptr)
 
void set_grid_parameters (tensor *grid, const bool orthorhombic, const int grid_full_size[3], const int grid_local_size[3], const int shift_local[3], const int border_width[3], const double dh[3][3], const double dh_inv[3][3], offload_buffer *grid_)
 
void grid_dgemm_create_task_list (const bool orthorhombic, const int ntasks, const int nlevels, const int natoms, const int nkinds, const int nblocks, const int block_offsets[nblocks], const double atom_positions[natoms][3], const int atom_kinds[natoms], const grid_basis_set *basis_sets[nkinds], const int level_list[ntasks], const int iatom_list[ntasks], const int jatom_list[ntasks], const int iset_list[ntasks], const int jset_list[ntasks], const int ipgf_list[ntasks], const int jpgf_list[ntasks], const int border_mask_list[ntasks], const int block_num_list[ntasks], const double radius_list[ntasks], const double rab_list[ntasks][3], const int npts_global[nlevels][3], const int npts_local[nlevels][3], const int shift_local[nlevels][3], const int border_width[nlevels][3], const double dh[nlevels][3][3], const double dh_inv[nlevels][3][3], grid_dgemm_task_list **task_list)
 Allocates a task list for the dgemm backend. See grid_task_list.h for details. More...
 
void grid_dgemm_free_task_list (grid_dgemm_task_list *task_list)
 Deallocates given task list, basis_sets have to be freed separately. More...
 

Function Documentation

◆ return_dh()

void return_dh ( void *const  ptr,
const int  level,
double *const  dh 
)

Definition at line 23 of file grid_dgemm_context.c.

◆ return_dh_inv()

void return_dh_inv ( void *const  ptr,
const int  level,
double *const  dh_inv 
)

Definition at line 38 of file grid_dgemm_context.c.

◆ return_num_devs()

int return_num_devs ( void *const  ptr)

Definition at line 53 of file grid_dgemm_context.c.

◆ return_device_id()

int return_device_id ( void *const  ptr,
const int  device 
)

Definition at line 60 of file grid_dgemm_context.c.

◆ is_grid_orthorhombic()

int is_grid_orthorhombic ( void *const  ptr)

Definition at line 67 of file grid_dgemm_context.c.

◆ update_queue_length()

void update_queue_length ( void *const  ptr,
const int  queue_length 
)

Definition at line 73 of file grid_dgemm_context.c.

◆ update_atoms_position()

void update_atoms_position ( const int  natoms,
const double  atoms_positions[natoms][3],
grid_context data 
)

Definition at line 79 of file grid_dgemm_context.c.

Here is the caller graph for this function:

◆ update_atoms_kinds()

void update_atoms_kinds ( const int  natoms,
const int *  atoms_kinds,
grid_context data 
)

Definition at line 107 of file grid_dgemm_context.c.

Here is the caller graph for this function:

◆ update_block_offsets()

void update_block_offsets ( const int  nblocks,
const int *const  block_offsets,
grid_context data 
)

Definition at line 131 of file grid_dgemm_context.c.

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

◆ update_basis_set()

void update_basis_set ( const int  nkinds,
const grid_basis_set **const  basis_sets,
grid_context data 
)

Definition at line 152 of file grid_dgemm_context.c.

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

◆ update_task_lists()

void update_task_lists ( const int  nlevels,
const int  ntasks,
const int *const  level_list,
const int *const  iatom_list,
const int *const  jatom_list,
const int *const  iset_list,
const int *const  jset_list,
const int *const  ipgf_list,
const int *const  jpgf_list,
const int *const  border_mask_list,
const int *  block_num_list,
const double *const  radius_list,
const double  rab_list[ntasks][3],
grid_context ctx 
)

Definition at line 167 of file grid_dgemm_context.c.

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

◆ update_layouts()

void update_layouts ( const int  nlevels,
const int  npts_global[nlevels][3],
const int  npts_local[nlevels][3],
const int  shift_local[nlevels][3],
const int  border_width[nlevels][3],
const double  dh[nlevels][3][3],
const double  dh_inv[nlevels][3][3],
grid_context ctx 
)

Definition at line 303 of file grid_dgemm_context.c.

Here is the caller graph for this function:

◆ update_grid()

void update_grid ( const int  nlevels,
grid_context ctx 
)

Definition at line 333 of file grid_dgemm_context.c.

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

◆ create_grid_context_dgemm()

void* create_grid_context_dgemm ( const bool  orthorhombic,
const int  ntasks,
const int  nlevels,
const int  natoms,
const int  nkinds,
const int  nblocks,
const int *  block_offsets,
const double  atom_positions[natoms][3],
const int *const  atom_kinds,
const grid_basis_set **const  basis_sets,
const int *const  level_list,
const int *const  iatom_list,
const int *  jatom_list,
const int *const  iset_list,
const int *const  jset_list,
const int *const  ipgf_list,
const int *const  jpgf_list,
const int *const  border_mask_list,
const int *  block_num_list,
const double *const  radius_list,
const double  rab_list[ntasks][3],
const int  npts_global[nlevels][3],
const int  npts_local[nlevels][3],
const int  shift_local[nlevels][3],
const int  border_width[nlevels][3],
const double  dh[nlevels][3][3],
const double  dh_inv[nlevels][3][3] 
)

Definition at line 352 of file grid_dgemm_context.c.

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

◆ update_grid_context_dgemm()

void update_grid_context_dgemm ( const bool  orthorhombic,
const int  ntasks,
const int  nlevels,
const int  natoms,
const int  nkinds,
const int  nblocks,
const int *  block_offsets,
const double  atom_positions[natoms][3],
const int *const  atom_kinds,
const grid_basis_set **const  basis_sets,
const int *const  level_list,
const int *const  iatom_list,
const int *  jatom_list,
const int *const  iset_list,
const int *const  jset_list,
const int *const  ipgf_list,
const int *const  jpgf_list,
const int *const  border_mask_list,
const int *  block_num_list,
const double *const  radius_list,
const double  rab_list[ntasks][3],
const int  npts_global[nlevels][3],
const int  npts_local[nlevels][3],
const int  shift_local[nlevels][3],
const int  border_width[nlevels][3],
const double  dh[nlevels][3][3],
const double  dh_inv[nlevels][3][3],
void *  ptr 
)

Definition at line 399 of file grid_dgemm_context.c.

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

◆ initialize_grid_context_on_gpu()

void initialize_grid_context_on_gpu ( void *  ptr,
const int  number_of_devices,
const int *  device_id 
)

Definition at line 438 of file grid_dgemm_context.c.

◆ destroy_grid_context_dgemm()

void destroy_grid_context_dgemm ( void *  ptr)

Definition at line 458 of file grid_dgemm_context.c.

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

◆ apply_cutoff()

void apply_cutoff ( void *  ptr)

Definition at line 484 of file grid_dgemm_context.c.

Here is the caller graph for this function:

◆ set_grid_parameters()

void set_grid_parameters ( tensor grid,
const bool  orthorhombic,
const int  grid_full_size[3],
const int  grid_local_size[3],
const int  shift_local[3],
const int  border_width[3],
const double  dh[3][3],
const double  dh_inv[3][3],
offload_buffer grid_ 
)

Definition at line 491 of file grid_dgemm_context.c.

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

◆ grid_dgemm_create_task_list()

void grid_dgemm_create_task_list ( const bool  orthorhombic,
const int  ntasks,
const int  nlevels,
const int  natoms,
const int  nkinds,
const int  nblocks,
const int  block_offsets[nblocks],
const double  atom_positions[natoms][3],
const int  atom_kinds[natoms],
const grid_basis_set basis_sets[nkinds],
const int  level_list[ntasks],
const int  iatom_list[ntasks],
const int  jatom_list[ntasks],
const int  iset_list[ntasks],
const int  jset_list[ntasks],
const int  ipgf_list[ntasks],
const int  jpgf_list[ntasks],
const int  border_mask_list[ntasks],
const int  block_num_list[ntasks],
const double  radius_list[ntasks],
const double  rab_list[ntasks][3],
const int  npts_global[nlevels][3],
const int  npts_local[nlevels][3],
const int  shift_local[nlevels][3],
const int  border_width[nlevels][3],
const double  dh[nlevels][3][3],
const double  dh_inv[nlevels][3][3],
grid_dgemm_task_list **  task_list 
)

Allocates a task list for the dgemm backend. See grid_task_list.h for details.

Definition at line 559 of file grid_dgemm_context.c.

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

◆ grid_dgemm_free_task_list()

void grid_dgemm_free_task_list ( grid_dgemm_task_list task_list)

Deallocates given task list, basis_sets have to be freed separately.

Definition at line 599 of file grid_dgemm_context.c.

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