Nbody6++GPU
Fortran C++ Cuda Jupyter Notebook M4 C Other
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 23 commits behind nbodyx:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build
doc
extra_inc
include
macro
samples
src
.gitattributes
.gitignore
Makefile.in
README
configure
configure.ac

README

Welcome to use Nbody6++, which is the parallel version of Nbody6.
Please send Email to longwang.astro@gmail.com if you find some problems during using the code.

---------------------------------------------------------------------
To install Nbody6++, please use:
./configure [options]
make
make install

The configure has several optional features, please use
./configure --help
to check these features.

----------------------
Some basice features:

--Install path:
The default install path is /usr/local, if you want to change another path, please use:
./configure --prefix=[YOURPATH]
Replace [YOURPATH] to the full path that you want to install Nbody6++.
There will be "bin", "doc", ["include", "lib"] created in your install path.

--GPU:
The GPU support is enabled in default case, if you want to disable GPU acceleration, please use:
./configure --disable-gpu

--MPI:
The MPI is enabled in default case, if you want to disable MPI, please use:
./configure --disable-mpi

**Notice if no Fortran MPI compiler (mpif77) exist, the configure cannot pass, the --disable-mpi should be added manually

--AVX/SSE:
The AVX is enable in default case, you can choose no AVX/SSE, SSE and AVX, the option is:
./configure --enable-simd=[arg]
Replace [arg] by "no", "sse", "avx".

**Notice when the CPU don't support AVX/SSE, the code can still be compiled if the compiler support them. In this case a warning will appear during configure. Please be careful for this warning. It means the code cannot be used in the current machine.
In the case for computer cluster, the code may be compiled in the login node without AVX/SSE support but used in working nodes that support AVX/SSE. Thus the configure does not switch off AVX/SSE even the CPU doesn't support.

--HDF5 output format:
The HDF5 is disabled in default case, if you want to enable it, please use:
./configure --enable-hdf5

**Notice when MPI is used, HDF5 compiler should be parallel version with Fortran enabled. If you want to use non-parallel version of HDF5 compiler with no MPI, please add '--disable-mpi' during comfigure

--extra tools:
There are some extra tools and libraries for reading conf.3 and do some basic analysis, the default case it's disabled, if you want to compile them, please use:
./configure --enable-tools

All these options can be used in the same time. For example:
./configure --prefix=/opt/nbody6++ --enable-tools --enable-hdf5

---------------------------------------------------------------------
***Important notice:

* When large NMAX is used, sometimes the segmentational fault happened after the simulation begin. This is due to the stack memory overflow. In this case, you should always run 
 $ ulimit -s unlimited
 before the code is started in the same shell.
 Be careful that the "ulimit" only works for current shell, thus it's need to be used every time when a new shell is opened.
 You can put it in .bashrc or .bash_profile to always load it when a new shell is open.

* In some Linux systems (e.g. Ubuntu), when the large NMAX is used, the compiling crash with the error: 
 "*** R_X86_64_PC32 against symbol ***"
 This error is related to the memory model of the Linux system. The detail of memory model is shown in https://software.intel.com/en-us/node/579558 
 The solution is to add the configure option "--enable-mcmodel=large"
 In this case, the code performance may slightly decrease compared with "mcmodel=medium/small"

---------------------------------------------------------------------
Please check doc/Nbody6++_manual.pdf for the detail description of Nbody6++