diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..4707c1d0ea8f4904defee403340fe74670f57b95 --- /dev/null +++ b/README.md @@ -0,0 +1,90 @@ +# 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. + diff --git a/README.txt b/README.txt deleted file mode 100644 index 0521ef08791df3d970ee225f69e79a8128f8ffaf..0000000000000000000000000000000000000000 --- a/README.txt +++ /dev/null @@ -1,97 +0,0 @@ - -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]