README.txt 3.46 KB
Newer Older
BRAMAS Berenger's avatar
BRAMAS Berenger committed
1 2 3 4

ScalFmm, Inria, Please read the licence.

---------------------------------------------------
BRAMAS Berenger's avatar
BRAMAS Berenger committed
5 6
---------------------------------------------------

7 8
/!\ ScalFMM has moved to Inria's GitLab: https://gitlab.inria.fr/solverstack/ScalFMM

BRAMAS Berenger's avatar
BRAMAS Berenger committed
9 10
To compile:
==========
BRAMAS Berenger's avatar
BRAMAS Berenger committed
11 12 13 14 15
# Go to 
cd scalfmm/Build
# Use cmake first by
cmake ..
# Or if you want to use MPI
BRAMAS Berenger's avatar
BRAMAS Berenger committed
16
cmake .. -DSCALFMM_USE_MPI=ON
BRAMAS Berenger's avatar
BRAMAS Berenger committed
17

PIACIBELLO Cyrille's avatar
PIACIBELLO Cyrille committed
18

BRAMAS Berenger's avatar
BRAMAS Berenger committed
19 20 21 22 23 24 25 26
# Configure, for example with:
ccmake ..
# turn on/off the options you want
# For example, it is advised to build the tests and have a look in scalfmm/Tests/
# Finally you can build by
make
# And access executables in scalfmm/Build/Tests/{Release,Debug}/.....

27
To compile with StarPU you can pass, as an example:
28 29 30 31
cmake .. -DSCALFMM_USE_STARPU=ON -DSCALFMM_USE_CUDA=OFF -DSCALFMM_USE_OPENCL=OFF  \
               -DHWLOC_DIR=/home/berenger/Download/hwloc-1.10.0/install/      \
               -DSTARPU_DIR=/home/berenger/Download/starpu-work/StarPU/installwithfxt

32

BRAMAS Berenger's avatar
BRAMAS Berenger committed
33
---------------------------------------------------
BRAMAS Berenger's avatar
BRAMAS Berenger committed
34 35 36 37
---------------------------------------------------

Build the doc:
=============
BRAMAS Berenger's avatar
BRAMAS Berenger committed
38 39 40 41 42
In scalfmm/Doc you can find several pdf and .tex file about
the implementation, kernels and data structure.

# The developer documentation is generated using DOxygen: 
cd scalfmm/Build
BRAMAS Berenger's avatar
BRAMAS Berenger committed
43
cmake .. -DSCALFMM_BUILD_DOC=ON
BRAMAS Berenger's avatar
BRAMAS Berenger committed
44 45 46 47
# Tape 
make doc
# This will create a Html dir
browser scalfmm/Build/Doc/html/index.html
48 49


BRAMAS Berenger's avatar
BRAMAS Berenger committed
50 51 52 53 54 55
---------------------------------------------------
---------------------------------------------------

Getting help and having news from us:
====================================

BRAMAS Berenger's avatar
BRAMAS Berenger committed
56
You can subscribe to the scalfmm users mailing list ( scalfmm-public-users@lists.gforge.inria.fr,  http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/scalfmm-public-users ). Very low trafic (~ 2 mails per year) just to know when a new version or an improvement is available.
BRAMAS Berenger's avatar
BRAMAS Berenger committed
57 58

Contact the developers at : scalfmm-public-support@lists.gforge.inria.fr
BRAMAS Berenger's avatar
BRAMAS Berenger committed
59 60 61 62 63 64 65


---------------------------------------------------
---------------------------------------------------

What inside :
=============
66
- Src : The Core of Scalfmm is under the Src directory. Users should not need to modify the source.
BRAMAS Berenger's avatar
BRAMAS Berenger committed
67
One can want to implement its own kernel or even its own parallelization whithout modifying the sources.
68 69 70 71 72 73
- Data : example of particles distributions
- Examples : examples of very common usage of Scalfmm
- Doc : should contains the generated Doc
- UTests : contains some unit tests (it can be a good example to understand some features)
- Tests : examples to know how to use scalfmm/put particles in the tree/iterate on the tree...
- Utils : some scripts to work with the data files.
BRAMAS Berenger's avatar
BRAMAS Berenger committed
74

BRAMAS Berenger's avatar
BRAMAS Berenger committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

---------------------------------------------------
---------------------------------------------------
Concerning the 1.3 to 1.4 API update:
=====================================
For example the previous M2L interface was:
void M2L(CellClass* const FRestrict inLocal, const CellClass* inInteractions[], const int /*inSize*/, const int inLevel) {

But the new one is:
void M2L(CellClass* const FRestrict inLocal, const CellClass* inInteractions[],
 const int neighborPositions[], const int inSize, const int inLevel) override {

In the previous version we were iterating by
for(int idxNeigh = 0 ; idxNeigh < 343 ; ++idxNeigh){
 // if interaction exits
 if(inInteractions[idxNeigh]){
     inInteractions[idxNeigh]


In the new one we do it by
for(int idxExistingNeigh = 0 ; idxExistingNeigh < inSize ; ++idxExistingNeigh){
 const int idxNeigh = neighborPositions[idxExistingNeigh];
 inInteractions[idxExistingNeigh]