Figure: Overview of inter-library dependencies for parallel execution of PIConGPU on a typical HPC system. Due to common binary incompatibilities between compilers, MPI and boost versions, we recommend to deploy a hierarchical module system such as lmod. An example setup can be found here.
-
gcc 4.6 to 4.8 (depends on your current CUDA version)
- Debian/Ubuntu:
sudo apt-get install gcc-4.6 g++-4.6 build-essential
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
- Arch Linux:
sudo pacman --sync base-devel
- the installed version of gcc might be too new. Compile an older gcc
- experimental alternatives: icc since cuda 5.5
- Debian/Ubuntu:
-
CUDA 5.0 or higher
- Attention: You must use at least the 5.5+ drivers even if you run with CUDA 5.0. Supported drivers: 319.82+/331.22+
- Arch Linux:
sudo pacman --sync cuda
-
at least one CUDA capable GPU
-
cmake 2.8.5 or higher
- Debian/Ubuntu:
sudo apt-get install cmake file cmake-curses-gui
- Arch Linux:
sudo pacman --sync cmake
- Debian/Ubuntu:
-
OpenMPI 1.5.1+ / MVAPICH2 1.8+ or similar (GPU aware install recommented)
- Debian/Ubuntu:
sudo apt-get install libopenmpi-dev
- Arch Linux:
sudo pacman --sync openmpi
- Debian/Ubuntu:
-
zlib
- Debian/Ubuntu:
sudo apt-get install zlib1g-dev
- Arch Linux:
sudo pacman --sync zlib
- Debian/Ubuntu:
-
boost 1.49.0+ ("program options", "regex" , "filesystem", "system" and nearly all header-only libs)
- download from http://www.boost.org/, e.g. version 1.49.0
- Debian/Ubuntu:
sudo apt-get install libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev libboost-system-dev
- Arch Linux:
sudo pacman --sync boost
- From source:
./bootstrap.sh --with-libraries=filesystem,program_options,regex,system --prefix=~/lib/boost
./b2 -j4 && ./b2 install
-
git 1.7.9.5 or higher
- Debian/Ubuntu:
sudo apt-get install git
- Arch Linux:
sudo pacman --sync git
- Debian/Ubuntu:
-
PIConGPU
git clone https://github.com/ComputationalRadiationPhysics/picongpu.git $HOME/src/picongpu
export PICSRC=$HOME/src/picongpu
(you should add this to your~/.bashrc
)
If you do not install the optional libraries, you will not have the full amount of PIConGPU plugins. We recomment to install at least pngwriter. Some of our examples will also need libSplash.
-
pngwriter >= 0.5.5
- download our modified version from github.com/pngwriter/pngwriter
- Requires libpng,
- Debian/Ubuntu:
sudo apt-get install libpng-dev
- Arch Linux:
sudo pacman --sync libpng
- Debian/Ubuntu:
- example:
mkdir -p ~/src ~/build ~/lib
git clone https://github.com/pngwriter/pngwriter.git ~/src/pngwriter/
cd ~/build
cmake -DCMAKE_INSTALL_PREFIX=~/lib/pngwriter ~/src/pngwriter
make install
- set the environment variable
PNGWRITER_ROOT
to
$HOME/lib/pngwriter
-
libSplash >= 1.2.4 (requires hdf5, boost program-options)
- Debian/Ubuntu dependencies:
sudo apt-get install libhdf5-openmpi-dev libboost-program-options-dev
- Arch Linux dependencies:
sudo pacman --sync hdf5-openmpi boost
- example:
mkdir -p ~/src ~/build ~/lib
git clone https://github.com/ComputationalRadiationPhysics/libSplash.git ~/src/splash/
cd ~/build
cmake -DCMAKE_INSTALL_PREFIX=~/lib/splash ~/src/splash
make install
- set the environment variable
SPLASH_ROOT
to
$HOME/lib/splash
- Debian/Ubuntu dependencies:
-
hdf5 >= 1.8.6, standard shared version (no c++, enable parallel), e.g.
hdf5/1.8.5-threadsafe
- Debian/Ubuntu:
sudo apt-get install libhdf5-openmpi-dev
- Arch Linux:
sudo pacman --sync hdf5-openmpi
- example:
mkdir -p ~/src ~/build ~/lib
cd ~/src
wget www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.11.tar.gz
tar -xvzf hdf5-1.8.11.tar.gz
cd hdf5-1.8.11
./configure --enable-parallel --enable-shared --prefix ~/lib/hdf5/
make
- optional:
make test
make install
- set the environment variable
HDF5_ROOT
to
$HOME/lib/hdf5
and the LD_LIBRARY_PATH toexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib/hdf5/lib
- Debian/Ubuntu:
-
splash2txt (requires libSplash and boost "program_options", "regex")
- converts slices in dumped hdf5 files to plain txt matrices
- assume you downloaded PIConGPU to
PICSRC=$HOME/src/picongpu
mkdir -p ~/build && cd ~/build
cmake -DCMAKE_INSTALL_PREFIX=$PICSRC/src/tools/bin $PICSRC/src/tools/splash2txt
make
make install
- add the directory of the binary
splash2txt
,$PICSRC/src/tools/bin
, to a place in your$PATH
- options:
splash2txt --help
- list all available datasets:
splash2txt --list <FILE_PREFIX>
-
png2gas (requires libSplash, pngwriter and boost "program_options")
- converts png files to hdf5 files that can be used as an input for a species initial density profiles
- compile and install exactly as splash2txt above
-
for VampirTrace support
- download 5.14.4 or higher, e.g. from http://www.tu-dresden.de
- example:
mkdir -p ~/src ~/build ~/lib
cd ~/src
wget -O VampirTrace-5.14.4.tar.gz "http://wwwpub.zih.tu-dresden.de/~mlieber/dcount/dcount.php?package=vampirtrace&get=VampirTrace-5.14.4.tar.gz"
tar -xvzf VampirTrace-5.14.4.tar.gz
cd VampirTrace-5.14.4
./configure --prefix=$HOME/lib/vampirtrace --with-cuda-dir=<CUDA_ROOT>
make all -j
make install
- add environment variable:
export PATH=$PATH:$HOME/lib/vampirtrace/bin
CUDA_ROOT
: cuda installation directory, e.g.export CUDA_ROOT=<CUDA_INSTALL>
MPI_ROOT
: mpi installation directory, e.g.export MPI_ROOT=<MPI_INSTALL>
- extend your
$PATH
with helper tools for PIConGPU, see point, Checkout and Build PIConGPU step 2.2
SPLASH_ROOT
: libsplash installation directory, e.g.export SPLASH_ROOT=$HOME/lib/splash
HDF5_ROOT
: hdf5 installation directory, e.g.export HDF5_ROOT=$HOME/lib/hdf5
LD_LIBRARY_PATH
: add path to $HOME/lib/hdf5/lib, e.g.export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib/hdf5/lib
PNGWRITER_ROOT
: pngwriter installation directory, e.g.export PNGWRITER_ROOT=<PNGWRITER_INSTALL>
VT_ROOT
: VampirTrace installation directory, e.g.export PATH=$PATH:$HOME/lib/vampirtrace/bin
- Be sure to build all libraries/dependencies with the same gcc version.
- Never set a environment variable to the source folder, always set them to the installation directory.
This is an example how to use the modular building environment of PIConGPU.
- Setup directories:
mkdir -p ~/src ~/build ~/paramSets ~/runs
~/runs
is the directory for PIConGPU simulation output- NOTE for HPC-Systems: Never write your simulation output to your home
(=
~/
) directory - In most cases
$WORK/runs
,$WORKDIR/runs
or/scratch/runs
are the right places!
- Download the source code:
git clone https://github.com/ComputationalRadiationPhysics/picongpu.git ~/src/picongpu
- optional: update the source code with
cd ~/src/picongpu && git pull
- optional: change to a different branch with
git branch
(show) andgit checkout <BranchName>
(switch)
- optional: update the source code with
export PATH=$PATH:$HOME/src/picongpu/src/tools/bin
export PICSRC=$HOME/src/picongpu
- Create parameterset:
$PICSRC/createParameterSet $PICSRC/examples/LaserWakefield/ ~/paramSets/case001
- Clone the LWFA example to
~/paramSets/case001
- Edit
~/paramSets/case001/include/simulation_defines/param/*
to change the physical configuration of this parameter set. - See
$PICSRC/createParameterSet --help
for more options. - optional:
$PICSRC/createParameterSet ~/paramSets/case001/ ~/paramSets/case002
- Clone the individual parameterSet
case001
tocase002
.
- Clone the individual parameterSet
- Clone the LWFA example to
cd ~/build
: go to the build directory to compile your first test- Configure:
$PICSRC/configure ~/paramSets/case001
- optional:
$PICSRC/configure --help
- NOTE: makefiles are always created in the current directory
- Configure one parameter set for one compilation
- The script
configure
is only a wrapper for cmake. The realcmake
command will be shown in the first line of the output. case001
is the directory were the full compiled binary with all parameter files will be installed to
- optional:
- Compile:
make [-j]
: compile PIConGPU with the current parameter set:case001
- Install:
make install
: copy binaries and params to a fixed data structure:case001
cd ~/paramSets/case001
: goto installed programm- Run: Example run for the HPC System "hypnos" using a PBS batch system
- optional:
tbg --help
tbg -s qsub -c submit/0016gpus.cfg -t submit/hypnos/k20_profile.tpl ~/runs/testBatch01
- This will create the directory
~/runs/testBatch01
were all simulation output will be written to. ( Again, do NOT use your home~/runs
- change this path!) tbg
will create a subfolderpicongpu
in the directory of the run with the same structure ascase001
. It can be reused to:- clone parameters as shown in step 3, by using this run as origin
- create a new binary with configure (step 5):
e.g.
$PICSRC/configure -i ~/paramSets/case002 ~/runs/testBatch01
- optional:
To build PIConGPU with tracing support, change the steps in the example to:
(5.) $PICSRC/configure ../projects/case001 -c "-DVAMPIR_ENABLE=ON"
(8.) cd ~/paramSets/case001
: goto installed programm
(9.) tbg -s qsub -c submit/0016gpus.cfg -t submit/hypnos/k20_vampir_profile.tpl ~/runs/testBatchVampir
This document uses markdown syntax: http://daringfireball.net/projects/markdown/
To create and up-to-date pdf out of this Markdown (.md) file use gimli. Anyway, please do not check in the binary pdf in our version control system!
sudo apt-get install rubygems wkhtmltopdf libxslt-dev libxml2-dev
sudo gem install gimli
gimli -f INSTALL.md
On OS X (Apple Macintosh) you can get gimli
using the already installed
ruby-gems
(gem
) or install a newer version using macports:
- install macports: http://www.macports.org/
- install rubygems
sudo port install rb-rubygems
rubygems is called gem by default - install gimli
sudo gem install gimli
(installs all libraries automatically) - convert documentation to pdf
gimli -f INSTALL.md