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

#include <MGPUMpdRdmeSolver.h>

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

Public Member Functions

 MGPUMpdRdmeSolver ()
virtual ~MGPUMpdRdmeSolver ()
virtual void initialize (unsigned int replicate, map< string, string > *parameters, ResourceAllocator::ComputeResources *resources)
 Initialize the simulation.
virtual bool needsReactionModel ()
 Tells whether the solver needs a reaction model.
virtual bool needsDiffusionModel ()
 Tells whether the solver needs a reaction model.
virtual void buildModel (const uint numberSpeciesA, const uint numberReactionsA, const uint *initialSpeciesCountsA, const uint *reactionTypeA, const double *kA, const int *SA, const uint *DA, const uint kCols=1)
virtual void buildDiffusionModel (const uint numberSiteTypesA, const double *DFA, const uint *RLA, lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, const unsigned int bytes_per_particle, si_dist_t latticeSpacing, const uint8_t *latticeData, const uint8_t *latticeSitesData, bool rowMajorData=true)
virtual void generateTrajectory ()
 Actually run the simulation.
virtual void setReactionRate (unsigned int rxid, float rate)
Public Member Functions inherited from lm::rdme::RDMESolver
 RDMESolver (RandomGenerator::Distributions neededDists)
virtual ~RDMESolver ()
virtual void setDiffusionModel (DiffusionModel *dm, const uint8_t *lattice, size_t latticeSize, const uint8_t *latticeSites, size_t latticeSitesSize)
Public Member Functions inherited from lm::cme::CMESolver
 CMESolver (RandomGenerator::Distributions neededDists)
virtual ~CMESolver ()
virtual void setReactionModel (lm::io::ReactionModel *reactionModel)
virtual void setModelPropensityFunction (uint reaction, double(*propensityFunction)(double time, uint *speciesCounts, void *args), void *propensityFunctionArg)
virtual void setSpeciesUpperLimit (uint species, uint limit)
virtual void setSpeciesLowerLimit (uint species, uint limit)
virtual void setFptTrackingList (list< uint > speciesList)
virtual void addToParameterTrackingList (pair< string, double * >parameter)
virtual void setReactionRateCME (unsigned int reactionId, double rate)
virtual void getSpeciesCountView (uint **counts, int *number)
virtual void getReactionRateConstantsView (int reactionNumber, double **rates, int *rateConstantCount)
Public Member Functions inherited from lm::me::MESolver
 MESolver ()
 Create the MESolver.
virtual ~MESolver ()

Protected Member Functions

virtual void allocateLattice (lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, const unsigned int bytes_per_particle, si_dist_t latticeSpacing)
virtual void writeLatticeData (double time, ByteLattice *lattice, lm::io::Lattice *latticeDataSet)
virtual void writeLatticeSites (double time, ByteLattice *lattice)
virtual void recordSpeciesCounts (double time, ByteLattice *lattice, lm::io::SpeciesCounts *speciesCountsDataSet)
virtual void writeSpeciesCounts (lm::io::SpeciesCounts *speciesCountsDataSet)
virtual int hookSimulation (double time, ByteLattice *lattice)
virtual void hookCheckSimulation (double time, ByteLattice *lattice)
virtual int run_next_timestep (int gpu, uint32_t timestep)
virtual uint64_t getTimestepSeed (uint32_t timestep, uint32_t substep)
virtual void computePropensities ()
virtual void initialize_decomposition ()
virtual void setupModelsOnDevice (int gpu)
virtual void copyModelsToDevice (int gpu)
virtual void start_threads ()
virtual void stop_threads ()
virtual void * run_thread (int)
virtual int handle_all_overflows ()
virtual int handle_overflows (int gpu, void *hptr, void *dptr, int ts)
virtual void calculateXLaunchParameters (dim3 *gridSize, dim3 *threadBlockSize, const unsigned int maxXBlockSize, const unsigned int latticeXSize, const unsigned int latticeYSize, const unsigned int latticeZSize)
virtual void calculateYLaunchParameters (dim3 *gridSize, dim3 *threadBlockSize, const unsigned int blockXSize, const unsigned int blockYSize, const unsigned int latticeXSize, const unsigned int latticeYSize, const unsigned int latticeZSize)
virtual void calculateZLaunchParameters (dim3 *gridSize, dim3 *threadBlockSize, const unsigned int blockXSize, const unsigned int blockZSize, const unsigned int latticeXSize, const unsigned int latticeYSize, const unsigned int latticeZSize)
virtual void calculateReactionLaunchParameters (dim3 *gridSize, dim3 *threadBlockSize, const unsigned int blockXSize, const unsigned int blockYSize, const unsigned int latticeXSize, const unsigned int latticeYSize, const unsigned int latticeZSize)
Protected Member Functions inherited from lm::rdme::RDMESolver
virtual void allocateDiffusionModel (uint numberSiteTypesA, lattice_size_t latticeXSize, lattice_size_t latticeYSize, lattice_size_t latticeZSize, site_size_t particlesPerSite, unsigned int bytes_per_particle, si_dist_t latticeSpacing)
virtual void setLatticeData (const uint8_t *latticeData)
virtual void setLatticeSitesData (const uint8_t *latticeSitesData)
virtual void destroyDiffusionModel ()
Protected Member Functions inherited from lm::cme::CMESolver
virtual void allocateModel (uint numberSpecies, uint numberReactions)
virtual void destroyModel ()
virtual double recordParameters (double nextRecordTime, double recordInterval, double simulationTime)
virtual void queueRecordedParameters (bool flush=false)
void updateSpeciesCounts (uint r)
bool reachedSpeciesLimit ()
virtual int hookSimulation (double time)
virtual int onBeginTrajectory ()
virtual int onEndTrajectory ()

Protected Attributes

uint32_t seed
double tau
bool reactionModelModified
uint32_t overflowTimesteps
uint32_t overflowListUses
int overflow_handling
unsigned int * model_reactionOrders
unsigned int * model_reactionSites
float * model_reactionRates
unsigned int * model_D1
unsigned int * model_D2
int8_t * model_S
float * model_T
uint8_t * model_RL
size_t zeroOrderSize
size_t firstOrderSize
size_t secondOrderSize
float * zeroOrder
float * firstOrder
float * secondOrder
MultiGPUMappermapper
ResourceAllocator::ComputeResourcesresources
gpu_worker_thread_paramsthreads
pthread_barrier_t start_barrier
pthread_barrier_t stop_barrier
pthread_barrier_t simulation_barrier
pthread_barrier_t overflow_barrier
int timesteps_to_run
uint32_t current_timestep
double printPerfInterval
bool aggcopy_x_unpack
bool aggcopy_r_pack
bool use_spin_barrier
Protected Attributes inherited from lm::rdme::RDMESolver
uint numberSiteTypes
double * DF
uintRL
Latticelattice
Protected Attributes inherited from lm::cme::CMESolver
RandomGenerator::Distributions neededDists
unsigned int replicate
map< string, string > * parameters
ResourceAllocator::ComputeResourcesresources
RandomGeneratorrng
uint numberSpecies
uint numberSpeciesToTrack
uint numberReactions
uintinitialSpeciesCounts
uintspeciesCounts
uintreactionTypes
int * S
uintD
void ** propensityFunctions
void ** propensityFunctionArgs
list< PropensityArgs * > propensityArgs
uint numberSpeciesLimits
SpeciesLimitspeciesLimits
uint numberFptTrackedSpecies
FPTTrackingfptTrackedSpecies
list< TrackedParametertrackedParameters
uintnumberDependentSpecies
uint ** dependentSpecies
int ** dependentSpeciesChange
uintnumberDependentReactions
uint ** dependentReactions

Friends

void * gpu_worker_thread (void *arg)

Additional Inherited Members

Static Protected Member Functions inherited from lm::cme::CMESolver
static double zerothOrderPropensity (double time, uint *speciesCounts, void *pargs)
static double firstOrderPropensity (double time, uint *speciesCounts, void *pargs)
static double secondOrderPropensity (double time, uint *speciesCounts, void *pargs)
static double secondOrderSelfPropensity (double time, uint *speciesCounts, void *pargs)
static double kHillPropensity (double time, uint *speciesCounts, void *pargs)
static double kHillTransportPropensity (double time, uint *speciesCounts, void *pargs)
static double zerothOrderHeavisidePropensity (double time, uint *speciesCounts, void *pargs)
static double michaelisMentenPropensity (double time, uint *speciesCounts, void *pargs)
static double competitiveMMPropensity (double time, uint *speciesCounts, void *pargs)
static double uncompetitiveMMPropensity (double time, uint *speciesCounts, void *pargs)
static double noncompetitiveMMPropensity (double time, uint *speciesCounts, void *pargs)

Constructor & Destructor Documentation

◆ MGPUMpdRdmeSolver()

lm::rdme::MGPUMpdRdmeSolver::MGPUMpdRdmeSolver ( )

◆ ~MGPUMpdRdmeSolver()

virtual lm::rdme::MGPUMpdRdmeSolver::~MGPUMpdRdmeSolver ( )
virtual

Member Function Documentation

◆ allocateLattice()

virtual void lm::rdme::MGPUMpdRdmeSolver::allocateLattice ( lattice_size_t latticeXSize,
lattice_size_t latticeYSize,
lattice_size_t latticeZSize,
site_size_t particlesPerSite,
const unsigned int bytes_per_particle,
si_dist_t latticeSpacing )
protectedvirtual

Reimplemented from lm::rdme::RDMESolver.

◆ buildDiffusionModel()

virtual void lm::rdme::MGPUMpdRdmeSolver::buildDiffusionModel ( const uint numberSiteTypesA,
const double * DFA,
const uint * RLA,
lattice_size_t latticeXSize,
lattice_size_t latticeYSize,
lattice_size_t latticeZSize,
site_size_t particlesPerSite,
const unsigned int bytes_per_particle,
si_dist_t latticeSpacing,
const uint8_t * latticeData,
const uint8_t * latticeSitesData,
bool rowMajorData = true )
virtual

Reimplemented from lm::rdme::RDMESolver.

◆ buildModel()

virtual void lm::rdme::MGPUMpdRdmeSolver::buildModel ( const uint numberSpeciesA,
const uint numberReactionsA,
const uint * initialSpeciesCountsA,
const uint * reactionTypeA,
const double * kA,
const int * SA,
const uint * DA,
const uint kCols = 1 )
virtual

Reimplemented from lm::cme::CMESolver.

◆ calculateReactionLaunchParameters()

virtual void lm::rdme::MGPUMpdRdmeSolver::calculateReactionLaunchParameters ( dim3 * gridSize,
dim3 * threadBlockSize,
const unsigned int blockXSize,
const unsigned int blockYSize,
const unsigned int latticeXSize,
const unsigned int latticeYSize,
const unsigned int latticeZSize )
protectedvirtual

◆ calculateXLaunchParameters()

virtual void lm::rdme::MGPUMpdRdmeSolver::calculateXLaunchParameters ( dim3 * gridSize,
dim3 * threadBlockSize,
const unsigned int maxXBlockSize,
const unsigned int latticeXSize,
const unsigned int latticeYSize,
const unsigned int latticeZSize )
protectedvirtual

◆ calculateYLaunchParameters()

virtual void lm::rdme::MGPUMpdRdmeSolver::calculateYLaunchParameters ( dim3 * gridSize,
dim3 * threadBlockSize,
const unsigned int blockXSize,
const unsigned int blockYSize,
const unsigned int latticeXSize,
const unsigned int latticeYSize,
const unsigned int latticeZSize )
protectedvirtual

◆ calculateZLaunchParameters()

virtual void lm::rdme::MGPUMpdRdmeSolver::calculateZLaunchParameters ( dim3 * gridSize,
dim3 * threadBlockSize,
const unsigned int blockXSize,
const unsigned int blockZSize,
const unsigned int latticeXSize,
const unsigned int latticeYSize,
const unsigned int latticeZSize )
protectedvirtual

◆ computePropensities()

virtual void lm::rdme::MGPUMpdRdmeSolver::computePropensities ( )
protectedvirtual

◆ copyModelsToDevice()

virtual void lm::rdme::MGPUMpdRdmeSolver::copyModelsToDevice ( int gpu)
protectedvirtual

◆ generateTrajectory()

virtual void lm::rdme::MGPUMpdRdmeSolver::generateTrajectory ( )
virtual

Actually run the simulation.

Implements lm::cme::CMESolver.

◆ getTimestepSeed()

virtual uint64_t lm::rdme::MGPUMpdRdmeSolver::getTimestepSeed ( uint32_t timestep,
uint32_t substep )
protectedvirtual

◆ handle_all_overflows()

virtual int lm::rdme::MGPUMpdRdmeSolver::handle_all_overflows ( )
protectedvirtual

◆ handle_overflows()

virtual int lm::rdme::MGPUMpdRdmeSolver::handle_overflows ( int gpu,
void * hptr,
void * dptr,
int ts )
protectedvirtual

◆ hookCheckSimulation()

virtual void lm::rdme::MGPUMpdRdmeSolver::hookCheckSimulation ( double time,
ByteLattice * lattice )
protectedvirtual

◆ hookSimulation()

virtual int lm::rdme::MGPUMpdRdmeSolver::hookSimulation ( double time,
ByteLattice * lattice )
protectedvirtual

◆ initialize()

virtual void lm::rdme::MGPUMpdRdmeSolver::initialize ( unsigned int replicate,
map< string, string > * parameters,
ResourceAllocator::ComputeResources * resources )
virtual

Initialize the simulation.

Parameters
replicateReplicate number out of total replicates
parametersA map of all the parameters for the simulation
Alist of resources assigned to the simulation

Reimplemented from lm::cme::CMESolver.

◆ initialize_decomposition()

virtual void lm::rdme::MGPUMpdRdmeSolver::initialize_decomposition ( )
protectedvirtual

◆ needsDiffusionModel()

virtual bool lm::rdme::MGPUMpdRdmeSolver::needsDiffusionModel ( )
inlinevirtual

Tells whether the solver needs a reaction model.

Implements lm::me::MESolver.

◆ needsReactionModel()

virtual bool lm::rdme::MGPUMpdRdmeSolver::needsReactionModel ( )
inlinevirtual

Tells whether the solver needs a reaction model.

Implements lm::me::MESolver.

◆ recordSpeciesCounts()

virtual void lm::rdme::MGPUMpdRdmeSolver::recordSpeciesCounts ( double time,
ByteLattice * lattice,
lm::io::SpeciesCounts * speciesCountsDataSet )
protectedvirtual

◆ run_next_timestep()

virtual int lm::rdme::MGPUMpdRdmeSolver::run_next_timestep ( int gpu,
uint32_t timestep )
protectedvirtual

◆ run_thread()

virtual void * lm::rdme::MGPUMpdRdmeSolver::run_thread ( int )
protectedvirtual

◆ setReactionRate()

virtual void lm::rdme::MGPUMpdRdmeSolver::setReactionRate ( unsigned int rxid,
float rate )
virtual

◆ setupModelsOnDevice()

virtual void lm::rdme::MGPUMpdRdmeSolver::setupModelsOnDevice ( int gpu)
protectedvirtual

◆ start_threads()

virtual void lm::rdme::MGPUMpdRdmeSolver::start_threads ( )
protectedvirtual

◆ stop_threads()

virtual void lm::rdme::MGPUMpdRdmeSolver::stop_threads ( )
protectedvirtual

◆ writeLatticeData()

virtual void lm::rdme::MGPUMpdRdmeSolver::writeLatticeData ( double time,
ByteLattice * lattice,
lm::io::Lattice * latticeDataSet )
protectedvirtual

◆ writeLatticeSites()

virtual void lm::rdme::MGPUMpdRdmeSolver::writeLatticeSites ( double time,
ByteLattice * lattice )
protectedvirtual

◆ writeSpeciesCounts()

virtual void lm::rdme::MGPUMpdRdmeSolver::writeSpeciesCounts ( lm::io::SpeciesCounts * speciesCountsDataSet)
protectedvirtual

◆ gpu_worker_thread

void * gpu_worker_thread ( void * arg)
friend

Member Data Documentation

◆ aggcopy_r_pack

bool lm::rdme::MGPUMpdRdmeSolver::aggcopy_r_pack
protected

◆ aggcopy_x_unpack

bool lm::rdme::MGPUMpdRdmeSolver::aggcopy_x_unpack
protected

◆ current_timestep

uint32_t lm::rdme::MGPUMpdRdmeSolver::current_timestep
protected

◆ firstOrder

float * lm::rdme::MGPUMpdRdmeSolver::firstOrder
protected

◆ firstOrderSize

size_t lm::rdme::MGPUMpdRdmeSolver::firstOrderSize
protected

◆ mapper

MultiGPUMapper* lm::rdme::MGPUMpdRdmeSolver::mapper
protected

◆ model_D1

unsigned int* lm::rdme::MGPUMpdRdmeSolver::model_D1
protected

◆ model_D2

unsigned int* lm::rdme::MGPUMpdRdmeSolver::model_D2
protected

◆ model_reactionOrders

unsigned int* lm::rdme::MGPUMpdRdmeSolver::model_reactionOrders
protected

◆ model_reactionRates

float* lm::rdme::MGPUMpdRdmeSolver::model_reactionRates
protected

◆ model_reactionSites

unsigned int* lm::rdme::MGPUMpdRdmeSolver::model_reactionSites
protected

◆ model_RL

uint8_t* lm::rdme::MGPUMpdRdmeSolver::model_RL
protected

◆ model_S

int8_t* lm::rdme::MGPUMpdRdmeSolver::model_S
protected

◆ model_T

float* lm::rdme::MGPUMpdRdmeSolver::model_T
protected

◆ overflow_barrier

pthread_barrier_t lm::rdme::MGPUMpdRdmeSolver::overflow_barrier
protected

◆ overflow_handling

int lm::rdme::MGPUMpdRdmeSolver::overflow_handling
protected

◆ overflowListUses

uint32_t lm::rdme::MGPUMpdRdmeSolver::overflowListUses
protected

◆ overflowTimesteps

uint32_t lm::rdme::MGPUMpdRdmeSolver::overflowTimesteps
protected

◆ printPerfInterval

double lm::rdme::MGPUMpdRdmeSolver::printPerfInterval
protected

◆ reactionModelModified

bool lm::rdme::MGPUMpdRdmeSolver::reactionModelModified
protected

◆ resources

ResourceAllocator::ComputeResources* lm::rdme::MGPUMpdRdmeSolver::resources
protected

◆ secondOrder

float * lm::rdme::MGPUMpdRdmeSolver::secondOrder
protected

◆ secondOrderSize

size_t lm::rdme::MGPUMpdRdmeSolver::secondOrderSize
protected

◆ seed

uint32_t lm::rdme::MGPUMpdRdmeSolver::seed
protected

◆ simulation_barrier

pthread_barrier_t lm::rdme::MGPUMpdRdmeSolver::simulation_barrier
protected

◆ start_barrier

pthread_barrier_t lm::rdme::MGPUMpdRdmeSolver::start_barrier
protected

◆ stop_barrier

pthread_barrier_t lm::rdme::MGPUMpdRdmeSolver::stop_barrier
protected

◆ tau

double lm::rdme::MGPUMpdRdmeSolver::tau
protected

◆ threads

gpu_worker_thread_params* lm::rdme::MGPUMpdRdmeSolver::threads
protected

◆ timesteps_to_run

int lm::rdme::MGPUMpdRdmeSolver::timesteps_to_run
protected

◆ use_spin_barrier

bool lm::rdme::MGPUMpdRdmeSolver::use_spin_barrier
protected

◆ zeroOrder

float* lm::rdme::MGPUMpdRdmeSolver::zeroOrder
protected

◆ zeroOrderSize

size_t lm::rdme::MGPUMpdRdmeSolver::zeroOrderSize
protected

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