Declare __STDC_*_MACROS in gmxpre.h
[alexxy/gromacs.git] / docs / install-guide / install-guide.md
index 9ab4db6b1095967e2d01bbd77527c1496098659d..095db26641212c0303656e4d8f6fe8c657dd70dc 100644 (file)
@@ -75,6 +75,9 @@ architectures including x86, AMD64/x86-64, PPC, ARM v7 and SPARC VIII.
 
 Technically, GROMACS can be compiled on any platform with an ANSI C99
 and C++98 compiler, and their respective standard C/C++ libraries.
+We use only a few C99 features, but note that the C++ compiler also needs to
+support these C99 features (notably, int64_t and related things), which are not
+part of the C++98 standard.
 Getting good performance on an OS and architecture requires choosing a
 good compiler. In practice, many compilers struggle to do a good job
 optimizing the GROMACS architecture-optimized SIMD kernels.
@@ -650,6 +653,13 @@ CMakeLists.txt.
     is determined by CMake.
     The name of the directory can be changed using `GMX_LIB_INSTALL_DIR` CMake
     variable.
+`lib/pkgconfig/`
+  : Information about the installed `libgromacs` library for `pkg-config` is
+    installed here.  The `lib/` part adapts to the installation location of the
+    libraries.  The installed files contain the installation prefix as absolute
+    paths.
+`share/cmake/`
+  : CMake package configuration files are installed here.
 `share/gromacs/`
   : Various data files and some documentation go here.
     The `gromacs` part can be changed using `GMX_DATA_INSTALL_DIR`. Using this
@@ -909,18 +919,22 @@ accuracy and costs twice as much time moving memory around.
 You need to arrange for FFTW to be installed correctly, following the
 above instructions.
 
-`mpicc` is used for compiling and linking. This can make it awkward to
+MPI wrapper compilers should be used for compiling and linking. Both
+xlc and bgclang are supported back ends - either might prove to be
+faster in practice. The MPI wrapper compilers can make it awkward to
 attempt to use IBM's optimized BLAS/LAPACK called ESSL (see the
-section on
-[linear algebra libraries](#linear-algebra-libraries)). Since mdrun is
-the only part of GROMACS that should normally run on the compute
-nodes, and there is nearly no need for linear algebra support for
-mdrun, it is recommended to use the GROMACS built-in linear algebra
-routines - it is rare for this to run slowly.
+section on [linear algebra
+libraries](#linear-algebra-libraries)). Since mdrun is the only part
+of GROMACS that should normally run on the compute nodes, and there is
+nearly no need for linear algebra support for mdrun, it is recommended
+to use the GROMACS built-in linear algebra routines - this is never
+a problem for normal simulations.
 
 The recommended configuration is to use
 
-    cmake .. -DCMAKE_TOOLCHAIN_FILE=Platform/BlueGeneQ-static-XL-CXX \
+    cmake .. -DCMAKE_C_COMPILER=mpicc \
+             -DCMAKE_CXX_COMPILER=mpicxx \
+             -DCMAKE_TOOLCHAIN_FILE=Platform/BlueGeneQ-static-XL-CXX.cmake \
              -DCMAKE_PREFIX_PATH=/your/fftw/installation/prefix \
              -DGMX_MPI=ON \
              -DGMX_BUILD_MDRUN_ONLY=ON
@@ -928,7 +942,9 @@ The recommended configuration is to use
     make install
 
 which will build a statically-linked MPI-enabled mdrun for the compute
-nodes. Otherwise, GROMACS default configuration behaviour applies.
+nodes. Or use the Platform/BlueGeneQ-static-bgclang-cxx
+toolchain file if compiling with bgclang. Otherwise, GROMACS default configuration
+behaviour applies.
 
 It is possible to configure and make the remaining GROMACS tools with
 the compute-node toolchain, but as none of those tools are MPI-aware
@@ -951,8 +967,25 @@ add it. The default plain C kernels will work.
 
 This is the architecture of the K computer, which uses Fujitsu
 `Sparc64VIIIfx` chips. On this platform, GROMACS @PROJECT_VERSION@ has
-accelerated group kernels, no accelerated Verlet kernels, and a custom
-build toolchain.
+accelerated group kernels using the HPC-ACE instructions, no
+accelerated Verlet kernels, and a custom build toolchain. Since this
+particular chip only does double precision SIMD, the default setup
+is to build Gromacs in double. Since most users only need single, we have added
+an option GMX_RELAXED_DOUBLE_PRECISION to accept single precision square root
+accuracy in the group kernels; unless you know that you really need 15 digits
+of accuracy in each individual force, we strongly recommend you use this. Note
+that all summation and other operations are still done in double.
+
+The recommended configuration is to use
+
+    cmake .. -DCMAKE_TOOLCHAIN_FILE=Toolchain-Fujitsu-Sparc64-mpi.cmake \
+             -DCMAKE_PREFIX_PATH=/your/fftw/installation/prefix \
+             -DCMAKE_INSTALL_PREFIX=/where/gromacs/should/be/installed \
+             -DGMX_MPI=ON \
+             -DGMX_BUILD_MDRUN_ONLY=ON \
+             -DGMX_RELAXED_DOUBLE_PRECISION=ON
+    make
+    make install
 
 ### Intel Xeon Phi ###