|
ExaFMM 1
Fast-multipole Method for exascale systems
|
#include <algorithm>#include <assert.h>#include <cmath>#include <complex>#include <cstdlib>#include <cstring>#include <fstream>#include <iomanip>#include <iostream>#include <list>#include <map>#include <omp.h>#include <queue>#include <stack>#include <string>#include <utility>#include <vector>#include "vec.h"

Go to the source code of this file.
Classes | |
| struct | Trace |
| Structure for pthread based trace. More... | |
| struct | JBody |
| Structure of source bodies (stuff to send) More... | |
| struct | Body |
| Structure of bodies. More... | |
| struct | Leaf |
| Linked list of leafs (only used in fast/topdown.h) More... | |
| struct | Node |
| Structure of nodes (only used in fast/topdown.h) More... | |
| struct | JCell |
| Structure of source cells (stuff to send) More... | |
| struct | Cell |
| Structure of cells. More... | |
| struct | Ewald |
| Structure for Ewald summation. More... | |
Typedefs | |
| typedef unsigned | bigint |
| < My vector type with operator overloading | |
| typedef double | real |
| Real number type on CPU. | |
| typedef float | gpureal |
| Real number type on GPU. | |
| typedef std::complex< real > | complex |
| Complex number type. | |
| typedef vec< 3, real > | vect |
| 3-D vector type | |
| typedef std::vector< bigint > | Bigints |
| Vector of big integer types. | |
| typedef std::map< pthread_t, double > | ThreadTrace |
| Map of pthread id to traced value. | |
| typedef std::map< pthread_t, int > | ThreadMap |
| Map of pthread id to thread id. | |
| typedef std::queue< Trace > | Traces |
| Queue of traces. | |
| typedef std::map< std::string, double > | Timer |
| Map of timer event name to timed value. | |
| typedef std::map< std::string, double >::iterator | TI_iter |
| Iterator for timer event name map. | |
| typedef std::vector< JBody > | JBodies |
| Vector of source bodies. | |
| typedef std::vector< JBody > ::iterator | JB_iter |
| Iterator for source body vector. | |
| typedef std::vector< Body > | Bodies |
| Vector of bodies. | |
| typedef std::vector< Body > ::iterator | B_iter |
| Iterator for body vector. | |
| typedef std::vector< Leaf > | Leafs |
| Vector of leafs. | |
| typedef std::vector< Leaf > ::iterator | L_iter |
| Iterator for leaf vector. | |
| typedef std::vector< Node > | Nodes |
| Vector of nodes. | |
| typedef std::vector< Node > ::iterator | N_iter |
| Iterator for node vector. | |
| typedef std::vector< JCell > | JCells |
| Vector of source cells. | |
| typedef std::vector< JCell > ::iterator | JC_iter |
| Iterator for source cell vector. | |
| typedef std::vector< Cell > | Cells |
| Vector of cells. | |
| typedef std::vector< Cell > ::iterator | C_iter |
| Iterator for cell vector. | |
| typedef std::queue< C_iter > | CellQueue |
| Queue of cell iterators. | |
| typedef std::stack< C_iter > | CellStack |
| Stack of cell iterators. | |
| typedef std::pair< C_iter, C_iter > | Pair |
| Pair of interacting cells. | |
| typedef std::queue< Pair > | PairQueue |
| Queue of interacting cell pairs. | |
| typedef std::stack< Pair > | PairStack |
| Stack of interacting cell pairs. | |
| typedef std::list< C_iter > | List |
| Interaction list. | |
| typedef std::list< C_iter > ::iterator | LC_iter |
| Iterator for interaction list. | |
| typedef std::vector< List > | Lists |
| Vector of interaction lists. | |
| typedef std::map< C_iter, int > | Map |
| Map of interaction lists. | |
| typedef std::map< C_iter, int > ::iterator | MC_iter |
| Iterator for interation list map. | |
| typedef std::vector< Map > | Maps |
| Vector of map of interaction lists. | |
| typedef std::vector< Ewald > | Ewalds |
| Vector of Ewald summation types. | |
| typedef std::vector< Ewald > ::iterator | E_iter |
| Iterator for Ewald summation types. | |
Enumerations | |
| enum | Equation { Laplace, VanDerWaals } |
Variables | |
| int | MPIRANK = 0 |
| MPI comm rank. | |
| int | MPISIZE = 1 |
| MPI comm size. | |
| int | DEVICE = 0 |
| GPU device ID. | |
| int | IMAGES = 0 |
| Number of periodic image sublevels. | |
| real | THETA = .5 |
| Multipole acceptance criteria. | |
| vect | Xperiodic = 0 |
| Coordinate offset of periodic image. | |
| const int | P = 6 |
| Order of expansions. | |
| const int | NCRIT = 30 |
| Number of bodies per cell. | |
| const int | MAXBODY = 200000 |
| Maximum number of bodies per GPU kernel. | |
| const int | MAXCELL = 10000000 |
| Maximum number of bodies/coefs in cell per GPU kernel. | |
| const real | CLET = 2 |
| LET opening critetia. | |
| const real | EPS = 1e-6 |
| Single precision epsilon. | |
| const real | EPS2 = 0 |
| Softening parameter (squared) | |
| const real | R2MIN = 0.25 |
| Minimum value for L-J R^2. | |
| const real | R2MAX = 64 |
| Maximum value for L-J R^2. | |
| const int | GPUS = 3 |
| Number of GPUs per node. | |
| const int | THREADS = 64 |
| Number of threads per thread-block. | |
| const int | PTHREADS = 4 |
| Number of pthreads in quark. | |
| const int | MTERM = P*(P+1)*(P+2)/6 |
| Number of Cartesian mutlipole terms. | |
| const int | LTERM = (P+1)*(P+2)*(P+3)/6 |
| Number of Cartesian local terms. | |
| const int | NTERM = P*(P+1)/2 |
| Number of Spherical multipole/local terms. | |
| typedef unsigned bigint |
| typedef std::complex<real> complex |
| typedef std::map<pthread_t,int> ThreadMap |
| typedef std::map<pthread_t,double> ThreadTrace |
| typedef std::map<std::string,double>::iterator TI_iter |
| typedef std::map<std::string,double> Timer |
| enum Equation |
| const int MAXBODY = 200000 |
| const int MAXCELL = 10000000 |
1.7.4