9#ifndef LM_RDME_CUDABYTELATTICEEXTENDED_H_ 
   10#define LM_RDME_CUDABYTELATTICEEXTENDED_H_ 
   47                           bool enableSizeChecking = 
true);
 
 
uint32_t site_size_t
Definition ByteLatticeExtended.h:23
uint32_t particle_t
Definition ByteLatticeExtended.h:19
uint32_t lattice_size_t
Definition Lattice.h:55
double si_dist_t
Definition Types.h:63
unsigned int uint
Definition Types.h:52
CudaByteLatticeExtended(lattice_coord_t size, si_dist_t spacing, uint particlesPerSite, bool enableSizeChecking=true)
Constructor with particle size support.
Definition MpdRdmeSolverExtended.h:33
uint32_t * particles
Definition ByteLattice.h:126
bool canAddParticle(lattice_size_t subvolume, particle_t particle) const
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.
bool isGPUSiteSizesSynched_
Definition CudaByteLatticeExtended.h:133
void removeParticleGPU(lattice_size_t subvolume, particle_t particle)
void addParticleGPU(lattice_size_t subvolume, particle_t particle)
site_size_t getParticlesAtSite(lattice_size_t subvolume, particle_t *particles, site_size_t maxCount) const
void updateSiteSize(lattice_size_t subvolume, particle_t particle, bool adding)
bool canAddParticleGPU(lattice_size_t subvolume, particle_t particle) const
virtual void addParticle(lattice_size_t index, particle_t particle) override
Add a particle to the specified site.
const ParticleSizeManager & getParticleSizeManager() const
void * cudaSiteSizes_[2]
Definition CudaByteLatticeExtended.h:128
virtual void * getGPUMemorySizeDest()
bool sizeCheckingEnabled_
Definition CudaByteLatticeExtended.h:122
virtual void copyToGPU() override
virtual ~CudaByteLatticeExtended()
Destructor.
uint32_t getSizeBasedOccupancy(lattice_size_t subvolume) const
void setSizeCheckingEnabled(bool enable)
virtual void removeParticles(lattice_size_t x, lattice_size_t y, lattice_size_t z) override
Remove a particle to the specified site.
uint32_t getSizeBasedOccupancy(lattice_size_t x, lattice_size_t y, lattice_size_t z) const
virtual void addParticleWithSizeCheck(lattice_size_t x, lattice_size_t y, lattice_size_t z, particle_t particle)
virtual void * getGPUMemoryParticleSizes()
uint32_t getParticleSize(particle_t particleType) const
uint cudaSiteSizesCurrent_
Definition CudaByteLatticeExtended.h:129
void syncSiteSizesFromGPU()
virtual void deallocateCudaMemory() override
bool isGPUParticleSizesSynched_
Definition CudaByteLatticeExtended.h:134
virtual void * getGPUMemorySizeLattice()
void validateSizeConstraints() const
void recalculateAllSiteSizes()
virtual void removeParticles(lattice_size_t index) override
Remove a particle to the specified site.
virtual void copyFromGPU() override
void updateGPUSiteSizes()
virtual void removeAllParticles() override
Empty all particles from the specified site.
bool canAddParticle(lattice_size_t x, lattice_size_t y, lattice_size_t z, particle_t particle) const
void setParticleSize(particle_t particleType, uint32_t size)
std::unique_ptr< ParticleSizeManager > sizeManager_
Definition CudaByteLatticeExtended.h:121
std::vector< uint32_t > siteSizes_
Definition CudaByteLatticeExtended.h:124
uint32_t maxSiteCapacity_
Definition CudaByteLatticeExtended.h:123
CudaByteLatticeExtended(lattice_coord_t size, si_dist_t spacing, uint particlesPerSite, bool enableSizeChecking=true)
Constructor with particle size support.
virtual void addParticleWithSizeCheck(lattice_size_t subvolume, particle_t particle)
bool isSizeCheckingEnabled() const
void initializeGPUSiteSizes()
virtual void allocateCudaMemory() override
size_t cudaParticleSizesSize_
Definition CudaByteLatticeExtended.h:130
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 swapSizeSrcDest()
virtual void * getGPUMemorySiteSizes()
std::map< uint32_t, uint32_t > getSizeBasedOccupancyStats() const
void * cudaParticleSizes_
Definition CudaByteLatticeExtended.h:131
size_t cudaSiteSizesSize_
Definition CudaByteLatticeExtended.h:127
CudaByteLattice(lattice_coord_t size, si_dist_t spacing, uint particlesPerSite)
lattice_coord_t size
Definition Lattice.h:256
si_dist_t spacing
Definition Lattice.h:258
Manages particle sizes and validates site occupancy constraints.
Definition ParticleSizeManager.h:48
Definition LatticeBuilder.h:60
Definition Capsule.cpp:46
Type to store a lattice coordinate.
Definition Lattice.h:59