README.txt 3.38 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
---------------------------------------------------

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

PIACIBELLO Cyrille's avatar
PIACIBELLO Cyrille committed
16

BRAMAS Berenger's avatar
BRAMAS Berenger committed
17 18 19 20 21 22 23 24
# 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}/.....

25
To compile with StarPU you can pass, as an example:
26 27 28 29
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

30

BRAMAS Berenger's avatar
BRAMAS Berenger committed
31
---------------------------------------------------
BRAMAS Berenger's avatar
BRAMAS Berenger committed
32 33 34 35
---------------------------------------------------

Build the doc:
=============
BRAMAS Berenger's avatar
BRAMAS Berenger committed
36 37 38 39 40
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
41
cmake .. -DSCALFMM_BUILD_DOC=ON
BRAMAS Berenger's avatar
BRAMAS Berenger committed
42 43 44 45
# Tape 
make doc
# This will create a Html dir
browser scalfmm/Build/Doc/html/index.html
46 47


BRAMAS Berenger's avatar
BRAMAS Berenger committed
48 49 50 51 52 53
---------------------------------------------------
---------------------------------------------------

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

BRAMAS Berenger's avatar
BRAMAS Berenger committed
54
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
55 56

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


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

What inside :
=============
64
- 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
65
One can want to implement its own kernel or even its own parallelization whithout modifying the sources.
66 67 68 69 70 71
- 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
72

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

---------------------------------------------------
---------------------------------------------------
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]