Lattice Microbes 2.5
This is for whole cell modeling
Loading...
Searching...
No Matches
MGPUMpdRdmeSolver.h
Go to the documentation of this file.
1/*
2 * University of Illinois Open Source License
3 * Copyright 2008-2018 Luthey-Schulten Group,
4 * Copyright 2012 Roberts Group,
5 * All rights reserved.
6 *
7 * Developed by: Luthey-Schulten Group
8 * University of Illinois at Urbana-Champaign
9 * http://www.scs.uiuc.edu/~schulten
10 *
11 * Developed by: Roberts Group
12 * Johns Hopkins University
13 * http://biophysics.jhu.edu/roberts/
14 *
15 * Permission is hereby granted, free of charge, to any person obtaining a copy of
16 * this software and associated documentation files (the Software), to deal with
17 * the Software without restriction, including without limitation the rights to
18 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
19 * of the Software, and to permit persons to whom the Software is furnished to
20 * do so, subject to the following conditions:
21 *
22 * - Redistributions of source code must retain the above copyright notice,
23 * this list of conditions and the following disclaimers.
24 *
25 * - Redistributions in binary form must reproduce the above copyright notice,
26 * this list of conditions and the following disclaimers in the documentation
27 * and/or other materials provided with the distribution.
28 *
29 * - Neither the names of the Luthey-Schulten Group, University of Illinois at
30 * Urbana-Champaign, the Roberts Group, Johns Hopkins University, nor the names
31 * of its contributors may be used to endorse or promote products derived from
32 * this Software without specific prior written permission.
33 *
34 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
35 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
37 * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
38 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
39 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40 * OTHER DEALINGS WITH THE SOFTWARE.
41 *
42 * Author(s): Elijah Roberts, Mike Hallock, Zane Thornburg
43 */
44
45#ifndef LM_RDME_MGPUMPDRDMESOLVER_H_
46#define LM_RDME_MGPUMPDRDMESOLVER_H_
47
48#include "cuda/lm_cuda.h"
50#include "rdme/RDMESolver.h"
51#include "rdme/ByteLattice.h"
54
55#if defined(MACOSX)
57#endif
58
59#define OVERFLOW_MODE_CLASSIC 0
60#define OVERFLOW_MODE_RELAXED 1
61
65
66namespace lm {
67
68namespace io {
69 class Lattice;
70 class SpeciesCounts;
71}
72
73namespace rdme {
74
75struct gpu_worker_thread_params;
76
78{
81
82public:
85
86 virtual void initialize(unsigned int replicate,
87 map<string, string>* parameters,
89
90 virtual bool needsReactionModel() {return true;}
91 virtual bool needsDiffusionModel() {return true;}
92
93 virtual void buildModel(const uint numberSpeciesA,
94 const uint numberReactionsA,
95 const uint* initialSpeciesCountsA,
96 const uint* reactionTypeA,
97 const double* kA,
98 const int* SA,
99 const uint* DA,
100 const uint kCols = 1);
101
102 virtual void buildDiffusionModel(const uint numberSiteTypesA,
103 const double* DFA,
104 const uint* RLA,
105 lattice_size_t latticeXSize,
106 lattice_size_t latticeYSize,
107 lattice_size_t latticeZSize,
108 site_size_t particlesPerSite,
109 const unsigned int bytes_per_particle,
110 si_dist_t latticeSpacing,
111 const uint8_t* latticeData,
112 const uint8_t* latticeSitesData,
113 bool rowMajorData = true);
114
115 virtual void generateTrajectory();
116 virtual void setReactionRate(unsigned int rxid, float rate);
117
118protected:
119 uint32_t seed;
120 double tau;
122
126
127 // Stored model parameters for const memory
128 unsigned int* model_reactionOrders;
129 unsigned int* model_reactionSites;
131
132 unsigned int* model_D1;
133 unsigned int* model_D2;
134
135 int8_t* model_S;
136 float* model_T;
137 uint8_t* model_RL;
138
141
146
150
154
155 virtual void allocateLattice(lattice_size_t latticeXSize,
156 lattice_size_t latticeYSize,
157 lattice_size_t latticeZSize,
158 site_size_t particlesPerSite,
159 const unsigned int bytes_per_particle,
160 si_dist_t latticeSpacing);
161
162 virtual void writeLatticeData(double time,
164 lm::io::Lattice* latticeDataSet);
165 virtual void writeLatticeSites(double time, ByteLattice* lattice);
166
167 virtual void recordSpeciesCounts(double time,
169 lm::io::SpeciesCounts* speciesCountsDataSet);
170 virtual void writeSpeciesCounts(lm::io::SpeciesCounts* speciesCountsDataSet);
171
172 virtual int hookSimulation(double time, ByteLattice* lattice);
173 virtual void hookCheckSimulation(double time, ByteLattice* lattice);
174
175 virtual int run_next_timestep(int gpu, uint32_t timestep);
176 virtual uint64_t getTimestepSeed(uint32_t timestep, uint32_t substep);
177
178 virtual void computePropensities();
180 virtual void setupModelsOnDevice(int gpu);
181 virtual void copyModelsToDevice(int gpu);
182
183 virtual void start_threads();
184 virtual void stop_threads();
185 virtual void* run_thread(int);
186 friend void* gpu_worker_thread(void* arg);
187
188 virtual int handle_all_overflows();
189 virtual int handle_overflows(int gpu, void* hptr, void* dptr, int ts);
190
191 virtual void calculateXLaunchParameters(dim3* gridSize, dim3* threadBlockSize,
192 const unsigned int maxXBlockSize,
193 const unsigned int latticeXSize,
194 const unsigned int latticeYSize,
195 const unsigned int latticeZSize);
196
197 virtual void calculateYLaunchParameters(dim3* gridSize, dim3* threadBlockSize,
198 const unsigned int blockXSize,
199 const unsigned int blockYSize,
200 const unsigned int latticeXSize,
201 const unsigned int latticeYSize,
202 const unsigned int latticeZSize);
203
204 virtual void calculateZLaunchParameters(dim3* gridSize, dim3* threadBlockSize,
205 const unsigned int blockXSize,
206 const unsigned int blockZSize,
207 const unsigned int latticeXSize,
208 const unsigned int latticeYSize,
209 const unsigned int latticeZSize);
210
211 virtual void calculateReactionLaunchParameters(dim3* gridSize, dim3* threadBlockSize,
212 const unsigned int blockXSize,
213 const unsigned int blockYSize,
214 const unsigned int latticeXSize,
215 const unsigned int latticeYSize,
216 const unsigned int latticeZSize);
217};
218
220{
221 pthread_t thread;
224
225 int gpu;
226 int ngpus;
228
229 // cuda objects
230 unsigned int *dLattice, *dLatticeTmp;
231 uint8_t* dSites;
232 cudaStream_t stream1, stream2;
233 unsigned int *h_overflows, *d_overflows;
234
235 // kernel launch params
238
239 // lattice segment geometry provided by the mapper
241
242#ifdef MPD_GLOBAL_S_MATRIX
243 uint8_t* RLG; // Device global memory pointer for RL matrix
244 int8_t* SG; // Device global memory pointer for S matrix
245#endif
246
247#ifdef MPD_GLOBAL_T_MATRIX
248 float* TG;
249#endif
250
251#ifdef MPD_GLOBAL_R_MATRIX
252 float* reactionRatesG;
253 unsigned int* reactionOrdersG;
254 unsigned int* reactionSitesG;
255
256 unsigned int* D1G;
257 unsigned int* D2G;
258#endif
259
261};
262
263
265__device__ inline size_t local_to_global(unsigned int x, unsigned int y, unsigned int z);
266__device__ inline size_t local_index(unsigned int x, unsigned int y, unsigned int z);
267__global__ void correct_overflows_mgpu(unsigned int* lattice, unsigned int* siteOverflowList);
268
269__global__ void MGPU_x_kernel_unpack(const unsigned int* inLattice,
270 const uint8_t* inSites,
271 unsigned int* outLattice,
272 const unsigned int z_start,
273 const unsigned long long timestepHash,
274 unsigned int* siteOverflowList,
275 unsigned int* buf_top,
276 unsigned int* buf_bot);
277
278__global__ void MGPU_x_kernel(const unsigned int* inLattice,
279 const uint8_t* inSites,
280 unsigned int* outLattice,
281 const unsigned int z_start,
282 const unsigned long long timestepHash,
283 unsigned int* siteOverflowList);
284
285__global__ void MGPU_y_kernel(const unsigned int* inLattice,
286 const uint8_t* inSites,
287 unsigned int* outLattice,
288 const unsigned long long timestepHash,
289 unsigned int* siteOverflowList);
290
291__global__ void MGPU_z_kernel(const unsigned int* inLattice,
292 const uint8_t* inSites,
293 unsigned int* outLattice,
294 const unsigned long long timestepHash,
295 unsigned int* siteOverflowList,
296 const unsigned int z_start);
297
298#ifdef MPD_GLOBAL_S_MATRIX
299 #ifdef MPD_GLOBAL_R_MATRIX
300 __global__ void MGPU_precomp_reaction_kernel(const unsigned int* inLattice,
301 const uint8_t* inSites,
302 unsigned int* outLattice,
303 const unsigned long long timestepHash,
304 unsigned int* siteOverflowList,
305 int z_start,
306 const __restrict__ int8_t* SG,
307 const __restrict__ uint8_t* RLG,
308 const unsigned int* __restrict__ reactionOrderG,
309 const unsigned int* __restrict__ reactionSitesG,
310 const unsigned int* __restrict__ D1G,
311 const unsigned int* __restrict__ D2G,
312 const float* __restrict__ reactionRatesG,
313 const float* __restrict__ qp0,
314 const float* __restrict__ qp1,
315 const float* __restrict__ qp2);
316
317 __global__ void MGPU_precomp_reaction_kernel_packing(const unsigned int* inLattice,
318 const uint8_t* inSites,
319 unsigned int* outLattice,
320 const unsigned long long timestepHash,
321 unsigned int* siteOverflowList,
322 int z_start,
323 const __restrict__ int8_t* SG,
324 const __restrict__ uint8_t* RLG,
325 const unsigned int* __restrict__ reactionOrdersG,
326 const unsigned int* __restrict__ reactionSitesG,
327 const unsigned int* __restrict__ D1G,
328 const unsigned int* __restrict__ D2G,
329 const float* __restrict__ reactionRatesG,
330 const float* __restrict__ qp0,
331 const float* __restrict__ qp1,
332 const float* __restrict__ qp2,
333 unsigned int* buf_top,
334 unsigned int* buf_bot);
335
336 __global__ void MGPU_reaction_kernel(const unsigned int* inLattice,
337 const uint8_t* inSites,
338 unsigned int* outLattice,
339 const unsigned long long timestepHash,
340 unsigned int* siteOverflowList,
341 const unsigned int z_start,
342 const int8_t* __restrict__ SG,
343 const uint8_t* __restrict__ RLG,
344 const unsigned int* __restrict__ reactionOrdersG,
345 const unsigned int* __restrict__ reactionSitesG,
346 const unsigned int* __restrict__ D1G,
347 const unsigned int* __restrict__ D2G,
348 const float* __restrict__ reactionRatesG);
349 #else
350 __global__ void MGPU_precomp_reaction_kernel(const unsigned int* inLattice,
351 const uint8_t* inSites,
352 unsigned int* outLattice,
353 const unsigned long long timestepHash,
354 unsigned int* siteOverflowList,
355 int z_start,
356 const __restrict__ int8_t* SG,
357 const __restrict__ uint8_t* RLG,
358 const float* __restrict__ qp0,
359 const float* __restrict__ qp1,
360 const float* __restrict__ qp2);
361
362 __global__ void MGPU_precomp_reaction_kernel_packing(const unsigned int* inLattice,
363 const uint8_t* inSites,
364 unsigned int* outLattice,
365 const unsigned long long timestepHash,
366 unsigned int* siteOverflowList,
367 int z_start,
368 const __restrict__ int8_t* SG,
369 const __restrict__ uint8_t* RLG,
370 const float* __restrict__ qp0,
371 const float* __restrict__ qp1,
372 const float* __restrict__ qp2,
373 unsigned int* buf_top,
374 unsigned int* buf_bot);
375
376 __global__ void MGPU_reaction_kernel(const unsigned int* inLattice,
377 const uint8_t* inSites,
378 unsigned int* outLattice,
379 const unsigned long long timestepHash,
380 unsigned int* siteOverflowList,
381 const unsigned int z_start,
382 const int8_t* __restrict__ SG,
383 const uint8_t* __restrict__ RLG);
384 #endif
385#else
386 __global__ void MGPU_precomp_reaction_kernel(const unsigned int* inLattice,
387 const uint8_t* inSites,
388 unsigned int* outLattice,
389 const unsigned long long timestepHash,
390 unsigned int* siteOverflowList,
391 int z_start,
392 const float* __restrict__ qp0,
393 const float* __restrict__ qp1,
394 const float* __restrict__ qp2);
395
396 __global__ void MGPU_precomp_reaction_kernel_packing(const unsigned int* inLattice,
397 const uint8_t* inSites,
398 unsigned int* outLattice,
399 const unsigned long long timestepHash,
400 unsigned int* siteOverflowList,
401 int z_start,
402 const float* __restrict__ qp0,
403 const float* __restrict__ qp1,
404 const float* __restrict__ qp2,
405 unsigned int* buf_top,
406 unsigned int* buf_bot);
407
408 __global__ void MGPU_reaction_kernel(const unsigned int* inLattice,
409 const uint8_t* inSites,
410 unsigned int* outLattice,
411 const unsigned long long timestepHash,
412 unsigned int* siteOverflowList,
413 const unsigned int z_start);
414#endif
415}
416}
417}
418
419#endif
uint32_t site_size_t
Definition ByteLatticeExtended.h:23
uint32_t lattice_size_t
Definition Lattice.h:55
struct segmentDescriptor SegmentDescriptor_s
Definition SegmentDescriptor.h:57
double si_dist_t
Definition Types.h:63
unsigned int uint
Definition Types.h:52
virtual int hookSimulation(double time)
Definition CMESolver.cpp:1242
Definition MultiGPUMapper.h:50
A representation for the resources for a given node.
Definition ResourceAllocator.h:62
map< string, string > * parameters
Definition CMESolver.h:266
unsigned int replicate
Definition CMESolver.h:265
An object that tracks the available resources for the main simulation runner.
Definition ResourceAllocator.h:57
A Lattice that is based on packed bytes of memory, i.e. one byte per lattice site to hold particles.
Definition ByteLattice.h:53
Base class for lattice type objects.
Definition Lattice.h:132
Definition MGPUMpdRdmeSolver.h:78
virtual void * run_thread(int)
virtual void writeLatticeData(double time, ByteLattice *lattice, lm::io::Lattice *latticeDataSet)
virtual void initialize_decomposition()
int timesteps_to_run
Definition MGPUMpdRdmeSolver.h:147
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)
float * model_T
Definition MGPUMpdRdmeSolver.h:136
virtual void writeLatticeSites(double time, ByteLattice *lattice)
float * secondOrder
Definition MGPUMpdRdmeSolver.h:140
uint32_t overflowTimesteps
Definition MGPUMpdRdmeSolver.h:123
pthread_barrier_t stop_barrier
Definition MGPUMpdRdmeSolver.h:145
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 bool needsDiffusionModel()
Tells whether the solver needs a reaction model.
Definition MGPUMpdRdmeSolver.h:91
uint32_t overflowListUses
Definition MGPUMpdRdmeSolver.h:124
bool aggcopy_x_unpack
Definition MGPUMpdRdmeSolver.h:151
virtual void copyModelsToDevice(int gpu)
float * firstOrder
Definition MGPUMpdRdmeSolver.h:140
virtual int handle_overflows(int gpu, void *hptr, void *dptr, int ts)
uint8_t * model_RL
Definition MGPUMpdRdmeSolver.h:137
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)
int overflow_handling
Definition MGPUMpdRdmeSolver.h:125
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)
double printPerfInterval
Definition MGPUMpdRdmeSolver.h:149
unsigned int * model_reactionOrders
Definition MGPUMpdRdmeSolver.h:128
float * zeroOrder
Definition MGPUMpdRdmeSolver.h:140
unsigned int * model_reactionSites
Definition MGPUMpdRdmeSolver.h:129
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)
uint32_t seed
Definition MGPUMpdRdmeSolver.h:119
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 hookCheckSimulation(double time, ByteLattice *lattice)
unsigned int * model_D2
Definition MGPUMpdRdmeSolver.h:133
bool reactionModelModified
Definition MGPUMpdRdmeSolver.h:121
size_t zeroOrderSize
Definition MGPUMpdRdmeSolver.h:139
virtual void recordSpeciesCounts(double time, ByteLattice *lattice, lm::io::SpeciesCounts *speciesCountsDataSet)
virtual int hookSimulation(double time, ByteLattice *lattice)
pthread_barrier_t start_barrier
Definition MGPUMpdRdmeSolver.h:145
virtual int run_next_timestep(int gpu, uint32_t timestep)
uint32_t current_timestep
Definition MGPUMpdRdmeSolver.h:148
unsigned int * model_D1
Definition MGPUMpdRdmeSolver.h:132
int8_t * model_S
Definition MGPUMpdRdmeSolver.h:135
size_t firstOrderSize
Definition MGPUMpdRdmeSolver.h:139
virtual void setupModelsOnDevice(int gpu)
friend void * gpu_worker_thread(void *arg)
bool use_spin_barrier
Definition MGPUMpdRdmeSolver.h:153
virtual void initialize(unsigned int replicate, map< string, string > *parameters, ResourceAllocator::ComputeResources *resources)
Initialize the simulation.
virtual void writeSpeciesCounts(lm::io::SpeciesCounts *speciesCountsDataSet)
float * model_reactionRates
Definition MGPUMpdRdmeSolver.h:130
virtual void start_threads()
pthread_barrier_t overflow_barrier
Definition MGPUMpdRdmeSolver.h:145
virtual bool needsReactionModel()
Tells whether the solver needs a reaction model.
Definition MGPUMpdRdmeSolver.h:90
bool aggcopy_r_pack
Definition MGPUMpdRdmeSolver.h:152
virtual int handle_all_overflows()
virtual void calculateXLaunchParameters(dim3 *gridSize, dim3 *threadBlockSize, const unsigned int maxXBlockSize, const unsigned int latticeXSize, const unsigned int latticeYSize, const unsigned int latticeZSize)
MultiGPUMapper * mapper
Definition MGPUMpdRdmeSolver.h:142
ResourceAllocator::ComputeResources * resources
Definition MGPUMpdRdmeSolver.h:143
gpu_worker_thread_params * threads
Definition MGPUMpdRdmeSolver.h:144
pthread_barrier_t simulation_barrier
Definition MGPUMpdRdmeSolver.h:145
virtual void generateTrajectory()
Actually run the simulation.
size_t secondOrderSize
Definition MGPUMpdRdmeSolver.h:139
virtual uint64_t getTimestepSeed(uint32_t timestep, uint32_t substep)
virtual void setReactionRate(unsigned int rxid, float rate)
virtual void computePropensities()
double tau
Definition MGPUMpdRdmeSolver.h:120
Definition RDMESolver.h:55
Lattice * lattice
Definition RDMESolver.h:73
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)
Definition RDMESolver.cpp:110
RDMESolver(RandomGenerator::Distributions neededDists)
Definition RDMESolver.cpp:58
Definition MGPUMpdRdmeSolver.h:264
__global__ void MGPU_x_kernel_unpack(const unsigned int *inLattice, const uint8_t *inSites, unsigned int *outLattice, const unsigned int z_start, const unsigned long long timestepHash, unsigned int *siteOverflowList, unsigned int *buf_top, unsigned int *buf_bot)
__device__ size_t local_index(unsigned int x, unsigned int y, unsigned int z)
__global__ void MGPU_z_kernel(const unsigned int *inLattice, const uint8_t *inSites, unsigned int *outLattice, const unsigned long long timestepHash, unsigned int *siteOverflowList, const unsigned int z_start)
__device__ size_t local_to_global(unsigned int x, unsigned int y, unsigned int z)
__global__ void MGPU_reaction_kernel(const unsigned int *inLattice, const uint8_t *inSites, unsigned int *outLattice, const unsigned long long timestepHash, unsigned int *siteOverflowList, const unsigned int z_start)
__global__ void MGPU_precomp_reaction_kernel_packing(const unsigned int *inLattice, const uint8_t *inSites, unsigned int *outLattice, const unsigned long long timestepHash, unsigned int *siteOverflowList, int z_start, const float *__restrict__ qp0, const float *__restrict__ qp1, const float *__restrict__ qp2, unsigned int *buf_top, unsigned int *buf_bot)
__global__ void correct_overflows_mgpu(unsigned int *lattice, unsigned int *siteOverflowList)
__global__ void MGPU_precomp_reaction_kernel(const unsigned int *inLattice, const uint8_t *inSites, unsigned int *outLattice, const unsigned long long timestepHash, unsigned int *siteOverflowList, int z_start, const float *__restrict__ qp0, const float *__restrict__ qp1, const float *__restrict__ qp2)
__global__ void MGPU_y_kernel(const unsigned int *inLattice, const uint8_t *inSites, unsigned int *outLattice, const unsigned long long timestepHash, unsigned int *siteOverflowList)
__global__ void MGPU_x_kernel(const unsigned int *inLattice, const uint8_t *inSites, unsigned int *outLattice, const unsigned int z_start, const unsigned long long timestepHash, unsigned int *siteOverflowList)
Definition Capsule.cpp:46
Definition MGPUMpdRdmeSolver.h:220
dim3 threads_z
Definition MGPUMpdRdmeSolver.h:237
unsigned int * dLattice
Definition MGPUMpdRdmeSolver.h:230
dim3 threads_x
Definition MGPUMpdRdmeSolver.h:237
SegmentDescriptor_s * segment
Definition MGPUMpdRdmeSolver.h:240
float * propZeroOrder
Definition MGPUMpdRdmeSolver.h:260
dim3 grid_y
Definition MGPUMpdRdmeSolver.h:236
unsigned int * d_overflows
Definition MGPUMpdRdmeSolver.h:233
dim3 threads_y
Definition MGPUMpdRdmeSolver.h:237
MultiGPUMapper * mapper
Definition MGPUMpdRdmeSolver.h:223
unsigned int * h_overflows
Definition MGPUMpdRdmeSolver.h:233
dim3 grid_x
Definition MGPUMpdRdmeSolver.h:236
int timesteps_to_run
Definition MGPUMpdRdmeSolver.h:227
int gpu
Definition MGPUMpdRdmeSolver.h:225
dim3 threads_r
Definition MGPUMpdRdmeSolver.h:237
pthread_t thread
Definition MGPUMpdRdmeSolver.h:221
float * propSecondOrder
Definition MGPUMpdRdmeSolver.h:260
dim3 grid_r
Definition MGPUMpdRdmeSolver.h:236
int ngpus
Definition MGPUMpdRdmeSolver.h:226
uint8_t * dSites
Definition MGPUMpdRdmeSolver.h:231
float * propFirstOrder
Definition MGPUMpdRdmeSolver.h:260
MGPUMpdRdmeSolver * runner
Definition MGPUMpdRdmeSolver.h:222
dim3 grid_z
Definition MGPUMpdRdmeSolver.h:236
cudaStream_t stream2
Definition MGPUMpdRdmeSolver.h:232
unsigned int * dLatticeTmp
Definition MGPUMpdRdmeSolver.h:230
cudaStream_t stream1
Definition MGPUMpdRdmeSolver.h:232