README.md 3.36 KB
Newer Older
1 2
# ScalFMM: Fast Multipole Method

PRUVOST Florent's avatar
PRUVOST Florent committed
3 4 5
[![pipeline status](https://gitlab.inria.fr/solverstack/ScalFMM/badges/develop/pipeline.svg)](https://gitlab.inria.fr/solverstack/ScalFMM/commits/develop)
[![coverage report](https://gitlab.inria.fr/solverstack/ScalFMM/badges/develop/coverage.svg)](https://gitlab.inria.fr/solverstack/ScalFMM/commits/develop)

6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
----

:warning: ScalFMM has moved to Inria's GitLab: https://gitlab.inria.fr/solverstack/ScalFMM

----

**ScalFMM** is a C++ library that implements a kernel independent Fast Multipole Method.


Copyright Inria, please read the licence.

### Requirements

  - CMake v2.8.12 or later
  - C++ compiler that supports
    - C++14 [compiler support list](http://en.cppreference.com/w/cpp/compiler_support)
    - [OpenMP](http://www.openmp.org/resources/openmp-compilers/)

The following are optional:

  - [Doxygen](http://www.stack.nl/~dimitri/doxygen/) to build the documentation.
  - An MPI implementation to build the distributed files.
  - Custom BLAS, FFT implementations.
  - [StarPU](http://starpu.gforge.inria.fr/) for the relevant FMM implementations.

31 32
### Get and Build ScalFMM
To use last development states of ScalFMM, please clone the develop
Berenger Bramas's avatar
Berenger Bramas committed
33
  branch. Note that ScalFMM contains two git submodules `morse_cmake` and `inastemp`.
34
  To get sources please use these commands:
35 36 37
``` bash
git clone --recursive git@gitlab.inria.fr:solverstack/ScalFMM.git -b develop
```
COULAUD Olivier's avatar
COULAUD Olivier committed
38 39 40 41 42 43 44 45
or
```bash
git clone git@gitlab.inria.fr:solverstack/ScalFMM.git
cd ScalFMM
git submodule init
git submodule update

``` 
46
# Move to the build folder
COULAUD Olivier's avatar
COULAUD Olivier committed
47
``` bash
48 49 50 51 52 53 54 55 56
cd scalfmm/Build
# Use cmake, with relevant options
cmake .. # -DSCALFMM_USE_MPI=ON
```

The build may be configured after the first CMake invocation using, for instance, `ccmake` or `cmake-gui`.

```bash
# Still in the Build folder
57
ccmake ../
58
# Or
59
cmake-gui ../
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
```

The binaries are then compiled calling `make`. They can be found in `scalfmm/Build/Tests/{Release,Debug}/...`

An example build using StarPU:

```bash
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
```


#### Build the doc:

```bash
cd scalfmm/Build
cmake .. -DSCALFMM_BUILD_DOC=ON # or if cmake has already been called, ccmake .
make doc
```

This will generate the documentation in HTML format in the `Build/Doc/html` folder. You can create a local server to access it using Python

```bash
# From the Build folder
cd Doc/html
python3 -m http.server # or python2 -m SimpleHTTPServer
```

The documentation can then be accessed from an internet browser at the address `localhost:8000`.


### Help and News

You can subscribe to the scalfmm-public-users@lists.gforge.inria.fr mailing list (http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/scalfmm-public-users). The list is very low trafic (~ 2 mails per year), we will let you know of improvements and releases.

Contact the developers at : scalfmm-public-support@lists.gforge.inria.fr

### Folder structure
  - Src : library core.
  - Data : particle distribution examples.
  - Examples : common usage examples.
  - Doc : documentation configuration.
  - UTests : unit tests.
  - Tests : examples to know how to use scalfmm/put particles in the tree/iterate on the tree...
  - Utils : some scripts and binaries to handle data files.