Commit 98fa69a9 authored by Quentin Khan's avatar Quentin Khan

Improve README and rename to README.md to use GitLab Markdown

parent 6fa88aa4
# ScalFMM: Fast Multipole Method
----
: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.
### Build
``` bash
# Move to the build folder
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
ccmake .
# Or
cmake-gui .
```
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.
ScalFmm, Inria, Please read the licence.
---------------------------------------------------
---------------------------------------------------
/!\ ScalFMM has moved to Inria's GitLab: https://gitlab.inria.fr/solverstack/ScalFMM
To compile:
==========
# Go to
cd scalfmm/Build
# Use cmake first by
cmake ..
# Or if you want to use MPI
cmake .. -DSCALFMM_USE_MPI=ON
# 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}/.....
To compile with StarPU you can pass, as an example:
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:
=============
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
cmake .. -DSCALFMM_BUILD_DOC=ON
# Tape
make doc
# This will create a Html dir
browser scalfmm/Build/Doc/html/index.html
---------------------------------------------------
---------------------------------------------------
Getting help and having news from us:
====================================
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.
Contact the developers at : scalfmm-public-support@lists.gforge.inria.fr
---------------------------------------------------
---------------------------------------------------
What inside :
=============
- Src : The Core of Scalfmm is under the Src directory. Users should not need to modify the source.
One can want to implement its own kernel or even its own parallelization whithout modifying the sources.
- 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.
---------------------------------------------------
---------------------------------------------------
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]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment