add installation guide
This commit is contained in:
parent
c80f10847f
commit
c7c0bdf9d3
@ -2,7 +2,161 @@
|
||||
Installation
|
||||
============
|
||||
|
||||
LBPM requires CMake, MPI and HDF5 as required dependencies.
|
||||
Sample scripts to configure and build LBPM are included in the `sample_scripts` directory. To build this package, MPI and cmake are required, along with a compiler that supports the C++-14 standard. Building in source is not supported.
|
||||
|
||||
The essential dependencies needed to build LBPM are:
|
||||
|
||||
1. cmake (version 3.9 or higher)
|
||||
2. MPI
|
||||
3. HDF5
|
||||
4. silo
|
||||
|
||||
*************************
|
||||
Building Dependencies
|
||||
*************************
|
||||
(skip if they are already installed on your system)
|
||||
|
||||
1. Download third-party library source files
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
zlib-1.2.11.tar.gz
|
||||
hdf5-1.8.12.tar.gz
|
||||
silo-4.10.2.tar.gz
|
||||
|
||||
|
||||
2. Set up path where you want to install
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export MPI_DIR=/path/to/mpi/
|
||||
export LBPM_ZLIB_DIR=/path/to/zlib
|
||||
export LBPM_HDF5_DIR=/path/to/hdf5
|
||||
export LBPM_SILO_DIR=/path/to/silo
|
||||
|
||||
3. Build third-party library dependencies
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
tar -xzvf zlib-1.2.11.tar.gz
|
||||
tar -xzvf hdf5-1.8.12.tar.gz
|
||||
tar -xzvf silo-4.10.2.tar.gz
|
||||
cd zlib-1.2.11
|
||||
|
||||
./configure --prefix=$LBPM_ZLIB_DIR && make && make install
|
||||
|
||||
cd ../hdf5-1.8.12
|
||||
|
||||
CC=$MPI_DIR/bin/mpicc CXX=$MPI_DIR/bin/mpicxx CXXFLAGS="-fPIC -O3 -std=c++14" \
|
||||
./configure --prefix=$LBPM_HDF5_DIR --enable-parallel --enable-shared --with-zlib=$LBPM_ZLIB_DIR
|
||||
make && make install
|
||||
|
||||
|
||||
cd ../silo-4.10.2
|
||||
|
||||
CC=$MPI_DIR/bin/mpicc CXX=$MPI_DIR/bin/mpicxx CXXFLAGS="-fPIC -O3 -std=c++14" \
|
||||
./configure --prefix=$LBPM_SILO_DIR -with-hdf5=$LBPM_HDF5_DIR/include,$LBPM_HDF5_DIR/lib --enable-static \\
|
||||
make && make install
|
||||
|
||||
*************************
|
||||
Building LBPM
|
||||
*************************
|
||||
|
||||
Many HPC systems will include all of these dependencies, and LBPM can be built simply by setting the paths to the associated libraries in the cmake configure line.
|
||||
|
||||
The steps typically used to build LBPM are as follows:
|
||||
|
||||
1. Set environment variables for the source directory `$LBPM_WIA_SOURCE` and build directory `$LBPM_WIA_DIR`
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export LBPM_SOURCE=/path/to/source/LBPM
|
||||
export LBPM_DIR=/path/to/build/LBPM
|
||||
|
||||
2. Set environment variables for the path to HDF5 and SILO (required), and optionally for TimerUtility and NetCDF (optional)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export LBPM_HDF5_DIR=/path/to/hdf5
|
||||
export LBPM_SILO_DIR=/path/to/silo
|
||||
export LBPM_TIMER_DIR=/path/to/timer
|
||||
export LBPM_NETCDF_DIR=/path/to/netcdf
|
||||
|
||||
3. Create the build directory and navigate to it
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mkdir $LBPM_WIA_DIR
|
||||
cd $LBPM_WIA_DIR
|
||||
|
||||
4. Configure the project. Numerous scripts exist to build LBPM on different HPC clusters, which are available in the `$LBPM_SOURCE/sample_scripts/` directory. It is often possible to run these scripts directly if one exists for a system similar to the one you are building on. For a standard CPU build:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cmake \
|
||||
-D CMAKE_BUILD_TYPE:STRING=Release \
|
||||
-D CMAKE_C_COMPILER:PATH=mpicc \
|
||||
-D CMAKE_CXX_COMPILER:PATH=mpicxx \
|
||||
-D CMAKE_C_FLAGS="-fPIC" \
|
||||
-D CMAKE_CXX_FLAGS="-fPIC" \
|
||||
-D CMAKE_CXX_STD=14 \
|
||||
-D USE_TIMER=0 \
|
||||
-D TIMER_DIRECTORY=$LBPM_TIMER_DIR \
|
||||
-D USE_NETCDF=0 \
|
||||
-D NETCDF_DIRECTORY=$LBPM_NETCDF_DIR \
|
||||
-D USE_SILO=1 \
|
||||
-D HDF5_DIRECTORY=$LBPM_HDF5_DIR \
|
||||
-D SILO_DIRECTORY=$LBPM_SILO_DIR \
|
||||
-D USE_CUDA=0 \
|
||||
$LBPM_SOURCE
|
||||
|
||||
For GPU support, it is necessary to have CUDA along with a GPU-aware MPI implementation. Otherwise, the LBPM routines should behave identically irrespective of the underlying hardware.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cmake \
|
||||
-D CMAKE_BUILD_TYPE:STRING=Release \
|
||||
-D CMAKE_C_COMPILER:PATH=mpicc \
|
||||
-D CMAKE_CXX_COMPILER:PATH=mpicxx \
|
||||
-D CMAKE_C_FLAGS="-fPIC" \
|
||||
-D CMAKE_CXX_FLAGS="-fPIC" \
|
||||
-D CMAKE_CXX_STD=14 \
|
||||
-D USE_TIMER=0 \
|
||||
-D TIMER_DIRECTORY=$LBPM_TIMER_DIR \
|
||||
-D USE_NETCDF=0 \
|
||||
-D NETCDF_DIRECTORY=$LBPM_NETCDF_DIR \
|
||||
-D USE_SILO=1 \
|
||||
-D HDF5_DIRECTORY=$LBPM_HDF5_DIR \
|
||||
-D SILO_DIRECTORY=$LBPM_SILO_DIR \
|
||||
-D USE_CUDA=1 \
|
||||
-D CMAKE_CUDA_FLAGS="-arch sm_70" \
|
||||
$LBPM_SOURCE
|
||||
|
||||
5. Build the project (using four cores to build)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make -j4
|
||||
|
||||
6. Install the project
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make install
|
||||
|
||||
7. Run the tests to make sure they execute correctly (on a cluster, it is recommended to run these using the batch system rather than on the head node)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
ctest
|
||||
|
||||
|
||||
*************************
|
||||
Sample Scripts
|
||||
*************************
|
||||
|
||||
The LBPM repository contains sample scripts showing successful CMake configuration, build and
|
||||
install steps for a range of systems. Refer to the project sub-directory below for these examples.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user