Grid 0.7.0
CartesianStencil< vobj, cobj, Parameters > Class Template Reference

#include <Stencil.h>

Inheritance diagram for CartesianStencil< vobj, cobj, Parameters >:
CartesianStencilAccelerator< vobj, cobj, Parameters > WilsonStencil< SiteSpinor, SiteHalfSpinor, ImplParams > WilsonStencil< vobj, cobj, Parameters >

Data Structures

struct  Packet
struct  Merge
struct  Decompress
struct  CopyReceiveBuffer
struct  CachedTransfer

Public Types

typedef cobj::vector_type vector_type
typedef cobj::scalar_object scalar_object
typedef const CartesianStencilView< vobj, cobj, Parameters > View_type
typedef View_type::StencilVector StencilVector

Public Member Functions

GridBaseGrid (void) const
void SetSloppyComms (int sloppy)
View_type View (ViewMode mode) const
int SameNode (int point)
void DecompressPacket (Packet &packet)
void CompressPacket (Packet &packet)
void CommunicateBegin (std::vector< std::vector< CommsRequest_t > > &reqs)
void CommunicateComplete (std::vector< std::vector< CommsRequest_t > > &reqs)
void Communicate (void)
template<class compressor>
void HaloExchange (const Lattice< vobj > &source, compressor &compress)
template<class compressor>
int HaloGatherDir (const Lattice< vobj > &source, compressor &compress, int point, int &face_idx)
template<class compressor>
void HaloGather (const Lattice< vobj > &source, compressor &compress)
void Prepare (void)
void AddCopy (void *from, void *to, Integer bytes)
void CommsCopy ()
Integer CheckForDuplicate (Integer direction, Integer OrthogPlane, Integer DestProc, void *recv_buf, Integer lane, Integer xbytes, Integer rbytes, Integer cb)
void AddPacket (void *xmit, void *rcv, Integer to, Integer do_send, Integer from, Integer do_recv, Integer xbytes, Integer rbytes)
void AddDecompress (cobj *k_p, cobj *m_p, Integer buffer_size, std::vector< Decompress > &dv)
void AddMerge (cobj *merge_p, std::vector< cobj * > &rpointers, Integer buffer_size, Integer type, std::vector< Merge > &mv)
template<class decompressor>
void CommsMerge (decompressor decompress)
template<class decompressor>
void CommsMergeSHM (decompressor decompress)
template<class decompressor>
void CommsMerge (decompressor decompress, std::vector< Merge > &mm, std::vector< Decompress > &dd)
void PrecomputeByteOffsets (void)
void BuildSurfaceList (int Ls, int vol4)
void DirichletBlock (const Coordinate &dirichlet_block)
 Introduce a block structure and switch off comms on boundaries.
 CartesianStencil (GridBase *grid, int npoints, int checkerboard, const std::vector< int > &directions, const std::vector< int > &distances, Parameters p=Parameters(), bool preserve_shm=false)
void Local (int point, int dimension, int shiftpm, int cbmask)
void Comms (int point, int dimension, int shiftpm, int cbmask)
void CopyPlane (int point, int dimension, int lplane, int rplane, int cbmask, int permute, int wrap)
void ScatterPlane (int point, int dimension, int plane, int cbmask, int offset, int wrap)
template<class compressor>
int Gather (const Lattice< vobj > &rhs, int dimension, int shift, int cbmask, compressor &compress, int &face_idx, int point)
template<class compressor>
int GatherSimd (const Lattice< vobj > &rhs, int dimension, int shift, int cbmask, compressor &compress, int &face_idx, int point)
accelerator_inline cobj * CommBuf (void) const
int GetNodeLocal (int osite, int point) const
accelerator_inline StencilEntryGetEntry (int &ptype, int point, int osite) const
accelerator_inline uint64_t GetInfo (int &ptype, int &local, int &perm, int point, int ent, uint64_t base) const
accelerator_inline uint64_t GetPFInfo (int ent, uint64_t base) const
accelerator_inline void iCoorFromIindex (Coordinate &coor, int lane) const

Data Fields

int SloppyComms
int face_table_computed
int fullDirichlet
std::vector< deviceVector< std::pair< int, int > > > face_table
deviceVector< int > surface_list
std::vector< StencilEntry_entries
deviceVector< StencilEntry_entries_device
std::vector< PacketPackets
std::vector< MergeMergers
std::vector< MergeMergersSHM
std::vector< DecompressDecompressions
std::vector< DecompressDecompressionsSHM
std::vector< CopyReceiveBufferCopyReceiveBuffers
std::vector< CachedTransferCachedTransfers
std::vector< CommsRequest_tMpiReqs
std::vector< cobj * > u_simd_send_buf
std::vector< cobj * > u_simd_recv_buf
int u_comm_offset
int _unified_buffer_size
int _checkerboard
int _npoints
int _osites
StencilVector _directions
StencilVector _distances
StencilVector _comms_send
StencilVector _comms_recv
StencilVector _comm_buf_size
StencilVector _permute_type
StencilVector same_node
Coordinate _simd_layout
Parameters parameters
ViewMode mode
StencilEntry_entries_p
StencilEntry_entries_host_p
cobj * u_recv_buf_p
cobj * u_send_buf_p

Protected Member Functions

void * DeviceBufferMalloc (size_t bytes)
void DeviceBufferFreeAll (void)

Protected Attributes

GridBase_grid
size_t device_heap_top
size_t device_heap_bytes
size_t device_heap_size

Detailed Description

template<class vobj, class cobj, class Parameters>
class CartesianStencil< vobj, cobj, Parameters >

Definition at line 201 of file Stencil.h.

Member Typedef Documentation

◆ vector_type

template<class vobj, class cobj, class Parameters>
typedef cobj::vector_type CartesianStencil< vobj, cobj, Parameters >::vector_type

Definition at line 204 of file Stencil.h.

◆ scalar_object

template<class vobj, class cobj, class Parameters>
typedef cobj::scalar_object CartesianStencil< vobj, cobj, Parameters >::scalar_object

Definition at line 205 of file Stencil.h.

◆ View_type

template<class vobj, class cobj, class Parameters>
typedef const CartesianStencilView<vobj,cobj,Parameters> CartesianStencil< vobj, cobj, Parameters >::View_type

Definition at line 206 of file Stencil.h.

◆ StencilVector

template<class vobj, class cobj, class Parameters>
typedef View_type::StencilVector CartesianStencil< vobj, cobj, Parameters >::StencilVector

Definition at line 207 of file Stencil.h.

Constructor & Destructor Documentation

◆ CartesianStencil()

template<class vobj, class cobj, class Parameters>
CartesianStencil< vobj, cobj, Parameters >::CartesianStencil ( GridBase * grid,
int npoints,
int checkerboard,
const std::vector< int > & directions,
const std::vector< int > & distances,
Parameters p = Parameters(),
bool preserve_shm = false )
inline

Member Function Documentation

◆ DeviceBufferMalloc()

template<class vobj, class cobj, class Parameters>
void * CartesianStencil< vobj, cobj, Parameters >::DeviceBufferMalloc ( size_t bytes)
inlineprotected

◆ DeviceBufferFreeAll()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::DeviceBufferFreeAll ( void )
inlineprotected

◆ Grid()

template<class vobj, class cobj, class Parameters>
GridBase * CartesianStencil< vobj, cobj, Parameters >::Grid ( void ) const
inline

Definition at line 292 of file Stencil.h.

◆ SetSloppyComms()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::SetSloppyComms ( int sloppy)
inline

Definition at line 298 of file Stencil.h.

◆ View()

template<class vobj, class cobj, class Parameters>
View_type CartesianStencil< vobj, cobj, Parameters >::View ( ViewMode mode) const
inline

Definition at line 307 of file Stencil.h.

◆ SameNode()

template<class vobj, class cobj, class Parameters>
int CartesianStencil< vobj, cobj, Parameters >::SameNode ( int point)
inline

◆ DecompressPacket()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::DecompressPacket ( Packet & packet)
inline

◆ CompressPacket()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::CompressPacket ( Packet & packet)
inline

◆ CommunicateBegin()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::CommunicateBegin ( std::vector< std::vector< CommsRequest_t > > & reqs)
inline

◆ CommunicateComplete()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::CommunicateComplete ( std::vector< std::vector< CommsRequest_t > > & reqs)
inline

◆ Communicate()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::Communicate ( void )
inline

◆ HaloExchange()

template<class vobj, class cobj, class Parameters>
template<class compressor>
void CartesianStencil< vobj, cobj, Parameters >::HaloExchange ( const Lattice< vobj > & source,
compressor & compress )
inline

◆ HaloGatherDir()

template<class vobj, class cobj, class Parameters>
template<class compressor>
int CartesianStencil< vobj, cobj, Parameters >::HaloGatherDir ( const Lattice< vobj > & source,
compressor & compress,
int point,
int & face_idx )
inline

◆ HaloGather()

template<class vobj, class cobj, class Parameters>
template<class compressor>
void CartesianStencil< vobj, cobj, Parameters >::HaloGather ( const Lattice< vobj > & source,
compressor & compress )
inline

◆ Prepare()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::Prepare ( void )
inline

◆ AddCopy()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::AddCopy ( void * from,
void * to,
Integer bytes )
inline

◆ CommsCopy()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::CommsCopy ( )
inline

◆ CheckForDuplicate()

template<class vobj, class cobj, class Parameters>
Integer CartesianStencil< vobj, cobj, Parameters >::CheckForDuplicate ( Integer direction,
Integer OrthogPlane,
Integer DestProc,
void * recv_buf,
Integer lane,
Integer xbytes,
Integer rbytes,
Integer cb )
inline

◆ AddPacket()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::AddPacket ( void * xmit,
void * rcv,
Integer to,
Integer do_send,
Integer from,
Integer do_recv,
Integer xbytes,
Integer rbytes )
inline

◆ AddDecompress()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::AddDecompress ( cobj * k_p,
cobj * m_p,
Integer buffer_size,
std::vector< Decompress > & dv )
inline

◆ AddMerge()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::AddMerge ( cobj * merge_p,
std::vector< cobj * > & rpointers,
Integer buffer_size,
Integer type,
std::vector< Merge > & mv )
inline

◆ CommsMerge() [1/2]

template<class vobj, class cobj, class Parameters>
template<class decompressor>
void CartesianStencil< vobj, cobj, Parameters >::CommsMerge ( decompressor decompress)
inline

◆ CommsMergeSHM()

template<class vobj, class cobj, class Parameters>
template<class decompressor>
void CartesianStencil< vobj, cobj, Parameters >::CommsMergeSHM ( decompressor decompress)
inline

◆ CommsMerge() [2/2]

template<class vobj, class cobj, class Parameters>
template<class decompressor>
void CartesianStencil< vobj, cobj, Parameters >::CommsMerge ( decompressor decompress,
std::vector< Merge > & mm,
std::vector< Decompress > & dd )
inline

Definition at line 815 of file Stencil.h.

◆ PrecomputeByteOffsets()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::PrecomputeByteOffsets ( void )
inline

◆ BuildSurfaceList()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::BuildSurfaceList ( int Ls,
int vol4 )
inline

Definition at line 840 of file Stencil.h.

◆ DirichletBlock()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::DirichletBlock ( const Coordinate & dirichlet_block)
inline

Introduce a block structure and switch off comms on boundaries.

Definition at line 884 of file Stencil.h.

Referenced by CartesianStencil< SiteSpinor, SiteSpinor, ImplParams >::CartesianStencil().

◆ Local()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::Local ( int point,
int dimension,
int shiftpm,
int cbmask )
inline

◆ Comms()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::Comms ( int point,
int dimension,
int shiftpm,
int cbmask )
inline

◆ CopyPlane()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::CopyPlane ( int point,
int dimension,
int lplane,
int rplane,
int cbmask,
int permute,
int wrap )
inline

◆ ScatterPlane()

template<class vobj, class cobj, class Parameters>
void CartesianStencil< vobj, cobj, Parameters >::ScatterPlane ( int point,
int dimension,
int plane,
int cbmask,
int offset,
int wrap )
inline

◆ Gather()

template<class vobj, class cobj, class Parameters>
template<class compressor>
int CartesianStencil< vobj, cobj, Parameters >::Gather ( const Lattice< vobj > & rhs,
int dimension,
int shift,
int cbmask,
compressor & compress,
int & face_idx,
int point )
inline

◆ GatherSimd()

template<class vobj, class cobj, class Parameters>
template<class compressor>
int CartesianStencil< vobj, cobj, Parameters >::GatherSimd ( const Lattice< vobj > & rhs,
int dimension,
int shift,
int cbmask,
compressor & compress,
int & face_idx,
int point )
inline

◆ CommBuf()

template<class vobj, class cobj, class Parameters>
accelerator_inline cobj * CartesianStencilAccelerator< vobj, cobj, Parameters >::CommBuf ( void ) const
inlineinherited

Definition at line 136 of file Stencil.h.

References accelerator_inline, and u_recv_buf_p.

◆ GetNodeLocal()

template<class vobj, class cobj, class Parameters>
int CartesianStencilAccelerator< vobj, cobj, Parameters >::GetNodeLocal ( int osite,
int point ) const
inlineinherited

◆ GetEntry()

template<class vobj, class cobj, class Parameters>
accelerator_inline StencilEntry * CartesianStencilAccelerator< vobj, cobj, Parameters >::GetEntry ( int & ptype,
int point,
int osite ) const
inlineinherited

Definition at line 143 of file Stencil.h.

References accelerator_inline, and ptype.

◆ GetInfo()

template<class vobj, class cobj, class Parameters>
accelerator_inline uint64_t CartesianStencilAccelerator< vobj, cobj, Parameters >::GetInfo ( int & ptype,
int & local,
int & perm,
int point,
int ent,
uint64_t base ) const
inlineinherited

◆ GetPFInfo()

template<class vobj, class cobj, class Parameters>
accelerator_inline uint64_t CartesianStencilAccelerator< vobj, cobj, Parameters >::GetPFInfo ( int ent,
uint64_t base ) const
inlineinherited

◆ iCoorFromIindex()

template<class vobj, class cobj, class Parameters>
accelerator_inline void CartesianStencilAccelerator< vobj, cobj, Parameters >::iCoorFromIindex ( Coordinate & coor,
int lane ) const
inlineinherited

Field Documentation

◆ _grid

template<class vobj, class cobj, class Parameters>
GridBase* CartesianStencil< vobj, cobj, Parameters >::_grid
protected

Definition at line 260 of file Stencil.h.

◆ device_heap_top

template<class vobj, class cobj, class Parameters>
size_t CartesianStencil< vobj, cobj, Parameters >::device_heap_top
protected

Definition at line 265 of file Stencil.h.

◆ device_heap_bytes

template<class vobj, class cobj, class Parameters>
size_t CartesianStencil< vobj, cobj, Parameters >::device_heap_bytes
protected

Definition at line 266 of file Stencil.h.

◆ device_heap_size

template<class vobj, class cobj, class Parameters>
size_t CartesianStencil< vobj, cobj, Parameters >::device_heap_size
protected

Definition at line 267 of file Stencil.h.

◆ SloppyComms

template<class vobj, class cobj, class Parameters>
int CartesianStencil< vobj, cobj, Parameters >::SloppyComms

Definition at line 297 of file Stencil.h.

◆ face_table_computed

template<class vobj, class cobj, class Parameters>
int CartesianStencil< vobj, cobj, Parameters >::face_table_computed

Definition at line 312 of file Stencil.h.

◆ fullDirichlet

template<class vobj, class cobj, class Parameters>
int CartesianStencil< vobj, cobj, Parameters >::fullDirichlet

Definition at line 314 of file Stencil.h.

◆ face_table

template<class vobj, class cobj, class Parameters>
std::vector<deviceVector<std::pair<int,int> > > CartesianStencil< vobj, cobj, Parameters >::face_table

Definition at line 315 of file Stencil.h.

◆ surface_list

template<class vobj, class cobj, class Parameters>
deviceVector<int> CartesianStencil< vobj, cobj, Parameters >::surface_list

Definition at line 316 of file Stencil.h.

◆ _entries

template<class vobj, class cobj, class Parameters>
std::vector<StencilEntry> CartesianStencil< vobj, cobj, Parameters >::_entries

Definition at line 318 of file Stencil.h.

◆ _entries_device

template<class vobj, class cobj, class Parameters>
deviceVector<StencilEntry> CartesianStencil< vobj, cobj, Parameters >::_entries_device

Definition at line 319 of file Stencil.h.

◆ Packets

template<class vobj, class cobj, class Parameters>
std::vector<Packet> CartesianStencil< vobj, cobj, Parameters >::Packets

Definition at line 320 of file Stencil.h.

◆ Mergers

template<class vobj, class cobj, class Parameters>
std::vector<Merge> CartesianStencil< vobj, cobj, Parameters >::Mergers

Definition at line 321 of file Stencil.h.

◆ MergersSHM

template<class vobj, class cobj, class Parameters>
std::vector<Merge> CartesianStencil< vobj, cobj, Parameters >::MergersSHM

Definition at line 322 of file Stencil.h.

◆ Decompressions

template<class vobj, class cobj, class Parameters>
std::vector<Decompress> CartesianStencil< vobj, cobj, Parameters >::Decompressions

Definition at line 323 of file Stencil.h.

◆ DecompressionsSHM

template<class vobj, class cobj, class Parameters>
std::vector<Decompress> CartesianStencil< vobj, cobj, Parameters >::DecompressionsSHM

Definition at line 324 of file Stencil.h.

◆ CopyReceiveBuffers

template<class vobj, class cobj, class Parameters>
std::vector<CopyReceiveBuffer> CartesianStencil< vobj, cobj, Parameters >::CopyReceiveBuffers

Definition at line 325 of file Stencil.h.

◆ CachedTransfers

template<class vobj, class cobj, class Parameters>
std::vector<CachedTransfer> CartesianStencil< vobj, cobj, Parameters >::CachedTransfers

Definition at line 326 of file Stencil.h.

◆ MpiReqs

template<class vobj, class cobj, class Parameters>
std::vector<CommsRequest_t> CartesianStencil< vobj, cobj, Parameters >::MpiReqs

Definition at line 327 of file Stencil.h.

◆ u_simd_send_buf

template<class vobj, class cobj, class Parameters>
std::vector<cobj *> CartesianStencil< vobj, cobj, Parameters >::u_simd_send_buf

Definition at line 335 of file Stencil.h.

◆ u_simd_recv_buf

template<class vobj, class cobj, class Parameters>
std::vector<cobj *> CartesianStencil< vobj, cobj, Parameters >::u_simd_recv_buf

Definition at line 336 of file Stencil.h.

◆ u_comm_offset

template<class vobj, class cobj, class Parameters>
int CartesianStencil< vobj, cobj, Parameters >::u_comm_offset

Definition at line 338 of file Stencil.h.

◆ _unified_buffer_size

template<class vobj, class cobj, class Parameters>
int CartesianStencil< vobj, cobj, Parameters >::_unified_buffer_size

Definition at line 339 of file Stencil.h.

◆ _checkerboard

template<class vobj, class cobj, class Parameters>
int CartesianStencilAccelerator< vobj, cobj, Parameters >::_checkerboard
inherited

Definition at line 108 of file Stencil.h.

◆ _npoints

template<class vobj, class cobj, class Parameters>
int CartesianStencilAccelerator< vobj, cobj, Parameters >::_npoints
inherited

Definition at line 109 of file Stencil.h.

◆ _osites

template<class vobj, class cobj, class Parameters>
int CartesianStencilAccelerator< vobj, cobj, Parameters >::_osites
inherited

Definition at line 110 of file Stencil.h.

◆ _directions

template<class vobj, class cobj, class Parameters>
StencilVector CartesianStencilAccelerator< vobj, cobj, Parameters >::_directions
inherited

◆ _distances

template<class vobj, class cobj, class Parameters>
StencilVector CartesianStencilAccelerator< vobj, cobj, Parameters >::_distances
inherited

◆ _comms_send

template<class vobj, class cobj, class Parameters>
StencilVector CartesianStencilAccelerator< vobj, cobj, Parameters >::_comms_send
inherited

Definition at line 117 of file Stencil.h.

◆ _comms_recv

template<class vobj, class cobj, class Parameters>
StencilVector CartesianStencilAccelerator< vobj, cobj, Parameters >::_comms_recv
inherited

Definition at line 118 of file Stencil.h.

◆ _comm_buf_size

template<class vobj, class cobj, class Parameters>
StencilVector CartesianStencilAccelerator< vobj, cobj, Parameters >::_comm_buf_size
inherited

Definition at line 125 of file Stencil.h.

◆ _permute_type

template<class vobj, class cobj, class Parameters>
StencilVector CartesianStencilAccelerator< vobj, cobj, Parameters >::_permute_type
inherited

◆ same_node

template<class vobj, class cobj, class Parameters>
StencilVector CartesianStencilAccelerator< vobj, cobj, Parameters >::same_node
inherited

Definition at line 127 of file Stencil.h.

◆ _simd_layout

template<class vobj, class cobj, class Parameters>
Coordinate CartesianStencilAccelerator< vobj, cobj, Parameters >::_simd_layout
inherited

◆ parameters

template<class vobj, class cobj, class Parameters>
Parameters CartesianStencilAccelerator< vobj, cobj, Parameters >::parameters
inherited

◆ mode

template<class vobj, class cobj, class Parameters>
ViewMode CartesianStencilAccelerator< vobj, cobj, Parameters >::mode
inherited

Definition at line 130 of file Stencil.h.

Referenced by CartesianStencilView< vobj, cobj, Parameters >::ViewOpen().

◆ _entries_p

template<class vobj, class cobj, class Parameters>
StencilEntry* CartesianStencilAccelerator< vobj, cobj, Parameters >::_entries_p
inherited

Definition at line 131 of file Stencil.h.

◆ _entries_host_p

template<class vobj, class cobj, class Parameters>
StencilEntry* CartesianStencilAccelerator< vobj, cobj, Parameters >::_entries_host_p
inherited

Definition at line 132 of file Stencil.h.

◆ u_recv_buf_p

template<class vobj, class cobj, class Parameters>
cobj* CartesianStencilAccelerator< vobj, cobj, Parameters >::u_recv_buf_p
inherited

Definition at line 133 of file Stencil.h.

Referenced by CommBuf(), GetInfo(), and GetPFInfo().

◆ u_send_buf_p

template<class vobj, class cobj, class Parameters>
cobj* CartesianStencilAccelerator< vobj, cobj, Parameters >::u_send_buf_p
inherited

Definition at line 134 of file Stencil.h.


The documentation for this class was generated from the following file: