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 |