Lattice Microbes 2.5
This is for whole cell modeling
Loading...
Searching...
No Matches
lm::rdme::CudaByteLatticeExtended Class Reference

CUDA-accelerated extended ByteLattice with particle size awareness. More...

#include <CudaByteLatticeExtended.h>

Inheritance diagram for lm::rdme::CudaByteLatticeExtended:
[legend]
Collaboration diagram for lm::rdme::CudaByteLatticeExtended:
[legend]

Public Member Functions

 CudaByteLatticeExtended (lattice_coord_t size, si_dist_t spacing, uint particlesPerSite, bool enableSizeChecking=true)
 Constructor with particle size support.
 CudaByteLatticeExtended (lattice_size_t xSize, lattice_size_t ySize, lattice_size_t zSize, si_dist_t spacing, uint particlesPerSite, bool enableSizeChecking=true)
 Constructor with particle size support.
virtual ~CudaByteLatticeExtended ()
 Destructor.
virtual void copyToGPU () override
virtual void copyFromGPU () override
virtual void * getGPUMemorySiteSizes ()
virtual void * getGPUMemoryParticleSizes ()
virtual void * getGPUMemorySizeLattice ()
virtual void * getGPUMemorySizeDest ()
virtual void swapSizeSrcDest ()
void setParticleSize (particle_t particleType, uint32_t size)
uint32_t getParticleSize (particle_t particleType) const
uint32_t getSizeBasedOccupancy (lattice_size_t x, lattice_size_t y, lattice_size_t z) const
uint32_t getSizeBasedOccupancy (lattice_size_t subvolume) const
bool canAddParticle (lattice_size_t x, lattice_size_t y, lattice_size_t z, particle_t particle) const
bool canAddParticle (lattice_size_t subvolume, particle_t particle) const
virtual void addParticleWithSizeCheck (lattice_size_t x, lattice_size_t y, lattice_size_t z, particle_t particle)
virtual void addParticleWithSizeCheck (lattice_size_t subvolume, particle_t particle)
virtual void addParticle (lattice_size_t x, lattice_size_t y, lattice_size_t z, particle_t particle) override
 Add a particle to the specified site.
virtual void addParticle (lattice_size_t index, particle_t particle) override
 Add a particle to the specified site.
virtual void removeParticles (lattice_size_t x, lattice_size_t y, lattice_size_t z) override
 Remove a particle to the specified site.
virtual void removeParticles (lattice_size_t index) override
 Remove a particle to the specified site.
virtual void removeAllParticles () override
 Empty all particles from the specified site.
void setSizeCheckingEnabled (bool enable)
bool isSizeCheckingEnabled () const
const ParticleSizeManagergetParticleSizeManager () const
void validateSizeConstraints () const
std::map< uint32_t, uint32_t > getSizeBasedOccupancyStats () const
void updateGPUSiteSizes ()
void syncSiteSizesFromGPU ()
Public Member Functions inherited from lm::rdme::CudaByteLattice
 CudaByteLattice (lattice_coord_t size, si_dist_t spacing, uint particlesPerSite)
 CudaByteLattice (lattice_size_t xSize, lattice_size_t ySize, lattice_size_t zSize, si_dist_t spacing, uint particlesPerSite)
virtual ~CudaByteLattice ()
virtual void * getGPUMemorySrc ()
virtual void * getGPUMemoryDest ()
virtual void swapSrcDest ()
virtual void * getGPUMemorySiteTypes ()
virtual size_t getParticleMemorySize () const
virtual void setSiteType (lattice_size_t x, lattice_size_t y, lattice_size_t z, site_t site)
 Set the site type at the specified location.
virtual void setSiteType (lattice_size_t index, site_t site)
 Set the site type at the specified location.
virtual void setFromRowMajorByteData (void *buffer, size_t bufferSize)
virtual void getSiteLatticeView (uint8_t **siteLattice, int *Nz, int *Ny, int *Nx)
virtual void getParticleLatticeView (uint8_t **particleLattice, int *Nw, int *Nz, int *Ny, int *Nx, int *Np)
Public Member Functions inherited from lm::rdme::ByteLattice
virtual site_t getMaxSiteType () const
 Get the maximum number of site types possible in the lattice.
virtual particle_t getMaxParticle () const
 Get the maximum number of particle types possible in the lattice.
virtual site_size_t getMaxOccupancy () const
 Get the maximum number of particles that can live in a site.
 ByteLattice (lattice_coord_t size, si_dist_t spacing, uint particlesPerSite)
 ByteLattice (lattice_size_t xSize, lattice_size_t ySize, lattice_size_t zSize, si_dist_t spacing, uint particlesPerSite)
virtual ~ByteLattice ()
virtual void getNeighboringSites (lattice_size_t index, lattice_size_t *neighboringIndices)
 Get the sites that are neighbor to the indicated site.
virtual site_t getSiteType (lattice_size_t x, lattice_size_t y, lattice_size_t z) const
 Get the site type at the specified location.
virtual site_t getSiteType (lattice_size_t subvolume) const
 Get the site type at the specified location.
void copySites (void *destBuffer, size_t latticeSize)
virtual site_size_t getOccupancy (lattice_size_t x, lattice_size_t y, lattice_size_t z) const
 Get the number of particles in the specified lattice site.
virtual site_size_t getOccupancy (lattice_size_t subvolume) const
 Get the number of particles in the specified lattice site.
virtual particle_t getParticle (lattice_size_t x, lattice_size_t y, lattice_size_t z, site_size_t particleIndex) const
 Get the particle at the specified site with at the specified number in the particle list.
virtual particle_t getParticle (lattice_size_t subvolume, site_size_t particleIndex) const
 Get the particle at the specified site with at the specified number in the particle list.
virtual std::map< particle_t, uintgetParticleCounts ()
 Get the number of each particle type in the lattice.
virtual std::vector< particle_loc_tfindParticles (particle_t minParticleType, particle_t maxParticleType)
 Get the number of the specified particles types in the lattice.
virtual void setSitesFromRowMajorByteData (void *buffer, size_t bufferSize)
virtual size_t getLatticeMemorySize () const
Public Member Functions inherited from lm::rdme::Lattice
 Lattice (lattice_coord_t size, si_dist_t spacing)
 Create a Lattice object.
 Lattice (lattice_size_t xSize, lattice_size_t ySize, lattice_size_t zSize, si_dist_t spacing)
 Create a Lattice object.
virtual ~Lattice ()
 Destroy the Lattice object.
virtual lattice_coord_t getSize () const
 Get size of the Lattice.
virtual lattice_size_t getXSize () const
 Get x dimension of the Lattice.
virtual lattice_size_t getYSize () const
 Get y dimension of the Lattice.
virtual lattice_size_t getZSize () const
 Get z dimension of the Lattice.
virtual lattice_size_t getNumberSites () const
 Get total number of sites in the Lattice.
virtual si_dist_t getSpacing () const
 Get spacing between lattice sites.
std::vector< lattice_coord_tgetNearbySites (lattice_size_t xc, lattice_size_t yc, lattice_size_t zc, uint minDistance, uint maxDistance)
 Get a list of sites near the specified site within a certain distance.
virtual void print () const
 Print the lattice to the console.

Protected Member Functions

virtual void allocateCudaMemory () override
virtual void deallocateCudaMemory () override
void updateSiteSize (lattice_size_t subvolume, particle_t particle, bool adding)
void initializeGPUSiteSizes ()
void recalculateAllSiteSizes ()
bool canAddParticleGPU (lattice_size_t subvolume, particle_t particle) const
void addParticleGPU (lattice_size_t subvolume, particle_t particle)
void removeParticleGPU (lattice_size_t subvolume, particle_t particle)
site_size_t getParticlesAtSite (lattice_size_t subvolume, particle_t *particles, site_size_t maxCount) const
Protected Member Functions inherited from lm::rdme::ByteLattice
virtual void allocateMemory ()
virtual void deallocateMemory ()
virtual uint32_t * getParticlesMemory ()
virtual uint8_t * getSitesMemory ()

Protected Attributes

std::unique_ptr< ParticleSizeManagersizeManager_
bool sizeCheckingEnabled_
uint32_t maxSiteCapacity_
std::vector< uint32_t > siteSizes_
size_t cudaSiteSizesSize_
void * cudaSiteSizes_ [2]
uint cudaSiteSizesCurrent_
size_t cudaParticleSizesSize_
void * cudaParticleSizes_
bool isGPUSiteSizesSynched_
bool isGPUParticleSizesSynched_
Protected Attributes inherited from lm::rdme::CudaByteLattice
uint cudaParticlesCurrent
size_t cudaParticlesSize
void * cudaParticles [2]
size_t cudaSiteTypesSize
void * cudaSiteTypes
bool isGPUMemorySynched
Protected Attributes inherited from lm::rdme::ByteLattice
size_t wordsPerSite
uint32_t * particles
uint8_t * siteTypes
Protected Attributes inherited from lm::rdme::Lattice
lattice_coord_t size
lattice_size_t numberSites
si_dist_t spacing

Friends

class lm::MpdRdmeSolverExtended

Additional Inherited Members

Static Public Member Functions inherited from lm::rdme::ByteLattice
static void nativeSerialize (void *destBuffer, void *lattice, size_t latticeSize)
static void nativeSerializeSites (void *destBuffer, void *lattice, size_t latticeSize)
static void copyNativeToRowMajorByte (void *destBuffer, void *sourceBuffer, lattice_size_t xSize, lattice_size_t ySize, lattice_size_t zSize, uint particlesPerSite, size_t bufferSize)
static void copyRowMajorByteToNative (void *destBuffer, void *sourceBuffer, lattice_size_t xSize, lattice_size_t ySize, lattice_size_t zSize, uint particlesPerSite, size_t bufferSize)
static void copySitesRowMajorByteToNative (void *destBuffer, void *sourceBuffer, lattice_size_t xSize, lattice_size_t ySize, lattice_size_t zSize, size_t bufferSize)
static void copySitesNativeToRowMajorByte (void *destBuffer, void *sourceBuffer, lattice_size_t xSize, lattice_size_t ySize, lattice_size_t zSize, size_t bufferSize)
Static Public Member Functions inherited from lm::rdme::Lattice
static void rowMajorByteSerialize (void *destBuffer, void *lattice, size_t bufferSize)
static void rowMajorIntSerialize (void *destBuffer, void *lattice, size_t bufferSize)
static void rowMajorByteSerializeSites (void *destBuffer, void *lattice, size_t bufferSize)

Detailed Description

CUDA-accelerated extended ByteLattice with particle size awareness.

This class extends CudaByteLattice to support particles with different sizes, providing GPU-accelerated capacity validation and site occupancy tracking. It maintains current site size = sum(particle * particle_size) for each site.

Constructor & Destructor Documentation

◆ CudaByteLatticeExtended() [1/2]

lm::rdme::CudaByteLatticeExtended::CudaByteLatticeExtended ( lattice_coord_t size,
si_dist_t spacing,
uint particlesPerSite,
bool enableSizeChecking = true )

Constructor with particle size support.

Parameters
sizeLattice dimensions
spacingLattice spacing
particlesPerSiteMaximum particles per site
enableSizeCheckingEnable particle size validation (default: true)

◆ CudaByteLatticeExtended() [2/2]

lm::rdme::CudaByteLatticeExtended::CudaByteLatticeExtended ( lattice_size_t xSize,
lattice_size_t ySize,
lattice_size_t zSize,
si_dist_t spacing,
uint particlesPerSite,
bool enableSizeChecking = true )

Constructor with particle size support.

Parameters
xSizeX dimension
ySizeY dimension
zSizeZ dimension
spacingLattice spacing
particlesPerSiteMaximum particles per site
enableSizeCheckingEnable particle size validation (default: true)

◆ ~CudaByteLatticeExtended()

virtual lm::rdme::CudaByteLatticeExtended::~CudaByteLatticeExtended ( )
virtual

Destructor.

Member Function Documentation

◆ addParticle() [1/2]

virtual void lm::rdme::CudaByteLatticeExtended::addParticle ( lattice_size_t index,
particle_t particle )
overridevirtual

Add a particle to the specified site.

Reimplemented from lm::rdme::CudaByteLattice.

◆ addParticle() [2/2]

virtual void lm::rdme::CudaByteLatticeExtended::addParticle ( lattice_size_t x,
lattice_size_t y,
lattice_size_t z,
particle_t particle )
overridevirtual

Add a particle to the specified site.

Reimplemented from lm::rdme::CudaByteLattice.

◆ addParticleGPU()

void lm::rdme::CudaByteLatticeExtended::addParticleGPU ( lattice_size_t subvolume,
particle_t particle )
protected

◆ addParticleWithSizeCheck() [1/2]

virtual void lm::rdme::CudaByteLatticeExtended::addParticleWithSizeCheck ( lattice_size_t subvolume,
particle_t particle )
virtual

◆ addParticleWithSizeCheck() [2/2]

virtual void lm::rdme::CudaByteLatticeExtended::addParticleWithSizeCheck ( lattice_size_t x,
lattice_size_t y,
lattice_size_t z,
particle_t particle )
virtual

◆ allocateCudaMemory()

virtual void lm::rdme::CudaByteLatticeExtended::allocateCudaMemory ( )
overrideprotectedvirtual

Reimplemented from lm::rdme::CudaByteLattice.

◆ canAddParticle() [1/2]

bool lm::rdme::CudaByteLatticeExtended::canAddParticle ( lattice_size_t subvolume,
particle_t particle ) const

◆ canAddParticle() [2/2]

bool lm::rdme::CudaByteLatticeExtended::canAddParticle ( lattice_size_t x,
lattice_size_t y,
lattice_size_t z,
particle_t particle ) const

◆ canAddParticleGPU()

bool lm::rdme::CudaByteLatticeExtended::canAddParticleGPU ( lattice_size_t subvolume,
particle_t particle ) const
protected

◆ copyFromGPU()

virtual void lm::rdme::CudaByteLatticeExtended::copyFromGPU ( )
overridevirtual

Reimplemented from lm::rdme::CudaByteLattice.

◆ copyToGPU()

virtual void lm::rdme::CudaByteLatticeExtended::copyToGPU ( )
overridevirtual

Reimplemented from lm::rdme::CudaByteLattice.

◆ deallocateCudaMemory()

virtual void lm::rdme::CudaByteLatticeExtended::deallocateCudaMemory ( )
overrideprotectedvirtual

Reimplemented from lm::rdme::CudaByteLattice.

◆ getGPUMemoryParticleSizes()

virtual void * lm::rdme::CudaByteLatticeExtended::getGPUMemoryParticleSizes ( )
virtual

◆ getGPUMemorySiteSizes()

virtual void * lm::rdme::CudaByteLatticeExtended::getGPUMemorySiteSizes ( )
virtual

◆ getGPUMemorySizeDest()

virtual void * lm::rdme::CudaByteLatticeExtended::getGPUMemorySizeDest ( )
virtual

◆ getGPUMemorySizeLattice()

virtual void * lm::rdme::CudaByteLatticeExtended::getGPUMemorySizeLattice ( )
virtual

◆ getParticlesAtSite()

site_size_t lm::rdme::CudaByteLatticeExtended::getParticlesAtSite ( lattice_size_t subvolume,
particle_t * particles,
site_size_t maxCount ) const
protected

◆ getParticleSize()

uint32_t lm::rdme::CudaByteLatticeExtended::getParticleSize ( particle_t particleType) const

◆ getParticleSizeManager()

const ParticleSizeManager & lm::rdme::CudaByteLatticeExtended::getParticleSizeManager ( ) const

◆ getSizeBasedOccupancy() [1/2]

uint32_t lm::rdme::CudaByteLatticeExtended::getSizeBasedOccupancy ( lattice_size_t subvolume) const

◆ getSizeBasedOccupancy() [2/2]

uint32_t lm::rdme::CudaByteLatticeExtended::getSizeBasedOccupancy ( lattice_size_t x,
lattice_size_t y,
lattice_size_t z ) const

◆ getSizeBasedOccupancyStats()

std::map< uint32_t, uint32_t > lm::rdme::CudaByteLatticeExtended::getSizeBasedOccupancyStats ( ) const

◆ initializeGPUSiteSizes()

void lm::rdme::CudaByteLatticeExtended::initializeGPUSiteSizes ( )
protected

◆ isSizeCheckingEnabled()

bool lm::rdme::CudaByteLatticeExtended::isSizeCheckingEnabled ( ) const

◆ recalculateAllSiteSizes()

void lm::rdme::CudaByteLatticeExtended::recalculateAllSiteSizes ( )
protected

◆ removeAllParticles()

virtual void lm::rdme::CudaByteLatticeExtended::removeAllParticles ( )
overridevirtual

Empty all particles from the specified site.

Reimplemented from lm::rdme::CudaByteLattice.

◆ removeParticleGPU()

void lm::rdme::CudaByteLatticeExtended::removeParticleGPU ( lattice_size_t subvolume,
particle_t particle )
protected

◆ removeParticles() [1/2]

virtual void lm::rdme::CudaByteLatticeExtended::removeParticles ( lattice_size_t index)
overridevirtual

Remove a particle to the specified site.

Reimplemented from lm::rdme::CudaByteLattice.

◆ removeParticles() [2/2]

virtual void lm::rdme::CudaByteLatticeExtended::removeParticles ( lattice_size_t x,
lattice_size_t y,
lattice_size_t z )
overridevirtual

Remove a particle to the specified site.

Reimplemented from lm::rdme::CudaByteLattice.

◆ setParticleSize()

void lm::rdme::CudaByteLatticeExtended::setParticleSize ( particle_t particleType,
uint32_t size )

◆ setSizeCheckingEnabled()

void lm::rdme::CudaByteLatticeExtended::setSizeCheckingEnabled ( bool enable)

◆ swapSizeSrcDest()

virtual void lm::rdme::CudaByteLatticeExtended::swapSizeSrcDest ( )
virtual

◆ syncSiteSizesFromGPU()

void lm::rdme::CudaByteLatticeExtended::syncSiteSizesFromGPU ( )

◆ updateGPUSiteSizes()

void lm::rdme::CudaByteLatticeExtended::updateGPUSiteSizes ( )

◆ updateSiteSize()

void lm::rdme::CudaByteLatticeExtended::updateSiteSize ( lattice_size_t subvolume,
particle_t particle,
bool adding )
protected

◆ validateSizeConstraints()

void lm::rdme::CudaByteLatticeExtended::validateSizeConstraints ( ) const

◆ lm::MpdRdmeSolverExtended

friend class lm::MpdRdmeSolverExtended
friend

Member Data Documentation

◆ cudaParticleSizes_

void* lm::rdme::CudaByteLatticeExtended::cudaParticleSizes_
protected

◆ cudaParticleSizesSize_

size_t lm::rdme::CudaByteLatticeExtended::cudaParticleSizesSize_
protected

◆ cudaSiteSizes_

void* lm::rdme::CudaByteLatticeExtended::cudaSiteSizes_[2]
protected

◆ cudaSiteSizesCurrent_

uint lm::rdme::CudaByteLatticeExtended::cudaSiteSizesCurrent_
protected

◆ cudaSiteSizesSize_

size_t lm::rdme::CudaByteLatticeExtended::cudaSiteSizesSize_
protected

◆ isGPUParticleSizesSynched_

bool lm::rdme::CudaByteLatticeExtended::isGPUParticleSizesSynched_
protected

◆ isGPUSiteSizesSynched_

bool lm::rdme::CudaByteLatticeExtended::isGPUSiteSizesSynched_
protected

◆ maxSiteCapacity_

uint32_t lm::rdme::CudaByteLatticeExtended::maxSiteCapacity_
protected

◆ siteSizes_

std::vector<uint32_t> lm::rdme::CudaByteLatticeExtended::siteSizes_
protected

◆ sizeCheckingEnabled_

bool lm::rdme::CudaByteLatticeExtended::sizeCheckingEnabled_
protected

◆ sizeManager_

std::unique_ptr<ParticleSizeManager> lm::rdme::CudaByteLatticeExtended::sizeManager_
protected

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