changa  3.5
 All Classes Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
Classes | Macros | Typedefs | Enumerations | Functions | Variables
ParallelGravity.h File Reference
#include "config.h"
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include "pup_stl.h"
#include "ckio.h"
#include "Vector3D.h"
#include "tree_xdr.h"
#include "TipsyFile.h"
#include "SFC.h"
#include "TreeNode.h"
#include "GenericTreeNode.h"
#include "Interval.h"
#include "parameters.h"
#include "param.h"
#include "dumpframe.h"
#include <liveViz.h>
#include "TaggedVector3D.h"
#include "codes.h"
#include "CacheInterface.h"
#include "keytype.h"
#include "GravityParticle.h"
#include "InOutput.h"
#include "ParallelGravity.decl.h"
#include "Compute.h"

Go to the source code of this file.

Classes

class  NewMaxOrder
 Class for new maxOrder broadcast. More...
 
class  dummyMsg
 Message to efficiently start entry methods with no arguments. More...
 
class  ComputeChunkMsg
 Message to start a remote gravity walk. More...
 
class  ORBSplittersMsg
 Message for evaluating splits for the ORB domain decomposition. More...
 
class  ParticleShuffleMsg
 Message for shuffling particles during domain decomposition. More...
 
class  CountSetPart
 Class to count added and deleted particles. More...
 
class  Main
 Overall flow control of the simulation. More...
 
struct  ewaldTable
 Coefficients for the Fourier space part of the Ewald sum. More...
 
struct  OffsetNodeStruct
 Remote Cell interaction lists for all tree levels. More...
 
struct  particlesInfoR
 Remote particles in an interaction list. More...
 
struct  particlesInfoL
 Local particles in an interaction list. More...
 
struct  LoopParDataStruct
 Data needed for the CkLoop intranode parallelization. More...
 
struct  NonLocalMomentsClient
 client that has requested a moment. More...
 
struct  NonLocalMomentsClientList
 List of clients needing a particular moment. More...
 
class  TreePiece
 Fundamental structure that holds particle and tree data. More...
 
class  LvArray
 Class for shadow arrays to avoid reduction conflicts in overlapping liveViz, SPH and gravity. More...
 
class  NonEmptyTreePieceCounter
 Used to count non-empty treepieces on the local processor. More...
 

Macros

#define MERGE_REMOTE_REQUESTS_VERBOSE(X)   /*CkPrintf x*/
 

Typedefs

typedef struct ewaldTable EWT
 Coefficients for the Fourier space part of the Ewald sum.
 
typedef struct OffsetNodeStruct OffsetNode
 Remote Cell interaction lists for all tree levels.
 
typedef CkQ< OffsetNodeCheckList
 Queue of nodes to check for interactions.
 
typedef CkVec< OffsetNodeUndecidedList
 Vector of nodes that are undecided at this level.
 
typedef CkVec< UndecidedListUndecidedLists
 Vector of undecided lists, one for each level.
 
typedef struct particlesInfoR RemotePartInfo
 Remote particles in an interaction list.
 
typedef struct particlesInfoL LocalPartInfo
 Local particles in an interaction list.
 
typedef struct LoopParDataStruct LoopParData
 Data needed for the CkLoop intranode parallelization. More...
 

Enumerations

enum  LBStrategy {
  Null =0, Multistep, Orb3d, Multistep_notopo,
  MultistepNode_notopo, Orb3d_notopo, MultistepOrb, HierarchOrb
}
 Load balancers that need the spatial information.
 
enum  DomainsDec {
  SFC_dec =0, Oct_dec =1, ORB_dec =2, SFC_peano_dec =3,
  SFC_peano_dec_3D =4, SFC_peano_dec_2D =5, ORB_space_dec =6
}
 Possible domain decomposition methods.
 
enum  NborDir { LEFT = 0, RIGHT }
 Directions for sending boundaries.
 

Functions

 PUPbytes (InDumpFrame)
 
 PUPbytes (COOL)
 
 PUPbytes (COOLPARAM)
 
void CkMustAssert (bool cond, const char *err)
 CkAssert() replacement works even in production mode.
 
 PUPbytes (LBStrategy)
 
 PUPbytes (NborDir)
 
void operator| (PUP::er &p, DomainsDec &d)
 
int RungToSubsteps (int iRung)
 Given a rung, return the number of substeps in one big step.
 
int DtToRung (double dDelta, double dTideal)
 Given the size of the big step, and a desired timestep, return the rung of the largest timestep less than dTideal.
 
double RungToDt (double dDelta, int iRung)
 Given the size of the big step, and a rung, return the corresponding timestep size.
 
double PoverRhoFloorJeans (double dResolveJeans, GravityParticle *p)
 Pressure floor to force Jeans length to be larger than the spatial resolution.
 
int decodeReqID (int)
 Given a requestID, return the bucket number.
 
int encodeOffset (int reqID, int x, int y, int z)
 Given a bucket number and a periodic offset, encode these into one number.
 
bool bIsReplica (int reqID)
 is this a periodic replica?
 
void printGenericTree (GenericTreeNode *node, std::ostream &os)
 Print a text version of a tree.
 

Variables

const double ddTolerance = 0.1
 tolerance for unequal pieces in SFC based decompositions.
 
CProxy_Main mainChare
 Proxy for Charm Main Chare.
 
int verbosity
 verbosity level. Higher is more verbose.
 
bool _cache
 Use the cache (always on)
 
int _nocache
 Disable the cache (always off)
 
int _cacheLineDepth
 Size of a Node Cache line, specified by how deep in the tree it goes.
 
unsigned int _yieldPeriod
 The number of buckets to process in the local gravity walk before yielding the processor.
 
DomainsDec domainDecomposition
 The type of domain decomposition to use.
 
double dExtraStore
 fraction of extra particle storage
 
double dMaxBalance
 Max piece imbalance for load balancing.
 
double dFracLoadBalance
 
double dGlassDamper
 for doing load balancing.
 
int bUseCkLoopPar
 Use Ckloop for node parallelization.
 
GenericTrees useTree
 type of tree to use.
 
CProxy_TreePiece treeProxy
 Proxy for the TreePiece chare array.
 
CProxy_LvArray lvProxy
 Proxy for the liveViz array.
 
CProxy_LvArray smoothProxy
 Proxy for smooth reductions.
 
CProxy_LvArray gravityProxy
 
CProxy_TreePiece streamingProxy
 A potentially optimized proxy for the tree pieces. Its use is deprecated.
 
CProxy_DataManager dMProxy
 Proxy for the DataManager.
 
CProxy_IntraNodeLBManager nodeLBMgrProxy
 Proxy for Managing IntraNode load balancing with ckloop.
 
unsigned int numTreePieces
 Number of pieces into which to divide the tree.
 
unsigned int particlesPerChare
 Number of particles per TreePiece. Used to determine the number of TreePieces.
 
int nIOProcessor
 Number of pieces to be doing I/O at once.
 
CProxy_DumpFrameData dfDataProxy
 Proxy for the dumpframe image data (DumpFrameData).
 
CProxy_PETreeMerger peTreeMergerProxy
 Proxy for the PETreeMerger group.
 
CProxy_CkCacheManager< KeyType > cacheGravPart
 Proxy for the gravity particle cache group.
 
CProxy_CkCacheManager< KeyType > cacheSmoothPart
 Proxy for the smooth particle cache group.
 
CProxy_CkCacheManager< KeyType > cacheNode
 Proxy for the tree node cache group.
 
CkGroupID dataManagerID
 The group ID of your DataManager. You must set this!
 
int boundaryEvaluationUE
 only cells. More...
 
int weightBalanceUE
 Weight balancing during Oct decomposition user event (for Projections tracing).
 
int networkProgressUE
 
int nodeForceUE
 
int partForceUE
 
int tbFlushRequestsUE
 
int prefetchDoneUE
 
int _prefetch
 Prefetch nodes for the remote walk.
 
int _randChunks
 
int _numChunks
 
unsigned int bucketSize
 
int localNodesPerReq
 GPU related settings.
 
int remoteNodesPerReq
 
int remoteResumeNodesPerReq
 
int localPartsPerReq
 
int remotePartsPerReq
 
int remoteResumePartsPerReq
 
double largePhaseThreshold
 
cosmoType theta
 BH-like opening criterion.
 
cosmoType thetaMono
 
int numInitDecompBins
 
int octRefineLevel
 
const int MAXRUNG = 30
 
const int MAXSUBSTEPS = 1 << MAXRUNG
 
const double MAXSUBSTEPS_INV = 1 / (double)MAXSUBSTEPS
 
const int PHASE_FEEDBACK = MAXRUNG + 1
 slot in MultistepLB to hold feedback phase load information
 
const double GAMMA_JEANS = 2.0
 Adiabatic index to use with the Jeans pressure floor.
 
const double GAMMA_NONCOOL = 5.0/3.0
 

Typedef Documentation

Data needed for the CkLoop intranode parallelization.

This structure holds the data that needs to be passed to a free processor so that it can calculate the gravity interactions. Each attribute is a list so that multiple buckets can be operated on.

Variable Documentation

int _numChunks

number of chunks into which to split the remote walk.

int _randChunks

Randomize the chunks for the remote walk.

int boundaryEvaluationUE

only cells.

Boundary evaluation user event (for Projections tracing).

unsigned int bucketSize

Maximum number of particles in a bucket.

double dFracLoadBalance

Min fraction of particles active

CProxy_LvArray gravityProxy

Proxy for gravity reductions

int numInitDecompBins

Number of bins to use for the first iteration of every Oct decomposition step

int octRefineLevel

Specifies the number of sub-bins a bin is split into for Oct decomposition

cosmoType thetaMono

Criterion of excepting monopole