LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
Author: Koichi Murakami (KEK) / Koich Andrea Dotti (SLAC) / i.Mu rakam i@ke k.jpadott i@sl ac.st anfo rd.ed u
G4MPI is a native interface with MPI libraries. The directory contains a Geant4 UI library and a couple of parallelized examples. Using this interface, users applications can be parallelized with different MPI compliant libraries, such as OpenMPI, MPICH2 and so on.
The MPI interface can work with MPI-compliant libraries, such as Open MPI, MPICH, Intel MPI etc.
For example, the information about Open MPI can be obtained from http://www.open-mpi.org/
G4mpi has been tested with the following MPI flavors:
CMake is used to build G4MPI library, that co-works with Geant4 build system.
ROOT for histogramming/analysis
To build G4MPI library, use CMake on Geant4 library installed with CMake build.
Follow these commands,
> mkdir build > cd build > cmake -DGeant4_DIR=<your Geant4 install path>/lib[64]/Geant4-V.m.n \ -DCMAKE_INSTALL_PREFIX=<where-G4mpi-lib-will-be-installed> \ <g4source>/examples/extended/parallel/MPI/source > make > make install
The cmake step will try to guess where MPI is installed, mpi executables should be in PATH. You can specify CXX and CC environment variables to your specific mpi wrappers if needed.
The library and header files will be installed on the installation directory specified in CMAKE_INSTALL_PREFIX a CMake configuration file will also be installed (see examples on how to compile an application using G4mpi)
An example of a main program:
Using cmake, assuming G4mpi library is installed in path g4mpi-path and Geant4 is installed in g4-path:
> mkdir build > cd build > cmake -DGeant4_DIR=<g4-path>/lib[64]/Geant4-V.m.n \ -DG4mpi_DIR=<g4mpi-path>/lib[64]/G4mpi-V.m.n \ <source> > make
Check provided examples: under examples/extended/parallel/MPI/examples for an example of CMakeLists.txt file to be used.
LAM/MPI users can use "G4tcsh" as an interactive session shell. For other users (Open MPI/MPICH2), plesae use G4csh (default).
In case of OpenMPI, LD_LIBRARY_PATH for OpenMPI runtime libraries should be set at run time. Alternatively, you can add this path to the dynamic linker configuration using ldconfig
. (needs sys-admin authorization)
lamboot
(LAM) / mpdboot
(MPICH2) / mpd
(Intel).For example,
> mpiexec -n # <your application>
Replace mpicxx with your MPI compiler wrapper if you need to specify which one to use.
Instead, mpirun
command is more convenient for LAM users.
G4UI commands handling the G4MPI interface are placed in /mpi/.
While "/run/beamOn" and "/mpi/beamOn" commands invoke beam-on in background, so you can input UI commands even while event processing. Note that drawing tracks in OpenGL with these commands causes a crash. Please use /mpi/.beamOn command instead.
The original "/control/execute" and "/run/beamOn" are overwritten with "/mpi/execute" and "/mpi/beamOn" commands respectively, that are customized for the MPI interface.
There are a couple of examples for Geant4 MPI applications.
For using ROOT libraries (exMPI02)
A simple application.
Configuration:
Features:
An example of dosimetry in a water phantom. Note: due to limited MT support in ROOT, in this example MT is disabled, but the code is migrated to MT, ready for MT when ROOT will support MT. For an example of MT+MPI take a look at exMPI03
Configuration:
Features:
This example is the same as exMPI02 with the following differences:
This example is the same as exMPI03 with added ntuple.