94 lines
3.0 KiB
Plaintext
94 lines
3.0 KiB
Plaintext
$Id$
|
|
|
|
///\file ".README.HowToRunMT.txt"
|
|
///\brief Examples Tips How To Run MT README page
|
|
|
|
/*! \page README_HowToRunMT Tips how to run an example in multi-threading mode
|
|
|
|
Only migrated examples or user applications can be run in multi-threading (MT) mode.
|
|
The instructions for migrating user applications can be found in Geant4 documentation guides
|
|
and a short howto is available here:
|
|
|
|
https://twiki.cern.ch/twiki/bin/view/Geant4/QuickMigrationGuideForGeant4V10
|
|
|
|
In this file, we give just useful tips for running already migrated examples
|
|
(or user applications).
|
|
|
|
\section HowToRunMT_s1 Run example in multi-threading mode
|
|
|
|
No special steps are needed to build an example in multi-threading (MT) mode.
|
|
The examples which has been migrated to multi-threading will automatically
|
|
run in MT when they are built against the Geant4 libraries built with MT mode
|
|
activated, otherwise they will run in sequential mode.
|
|
Not migrated examples will run in sequential mode even when built against
|
|
Geant4 libraries built with MT mode activated.
|
|
|
|
The examples which support MT can be easily recognized by the following lines
|
|
of code in main ():
|
|
\verbatim
|
|
#ifdef G4MULTITHREADED
|
|
G4MTRunManager* runManager = new G4MTRunManager;
|
|
#else
|
|
G4RunManager* runManager = new G4RunManager;
|
|
#endif
|
|
\endverbatim
|
|
The compiler flag -DG4MULTITHREADED is automatically set when building applications
|
|
using Geant4's CMake (via GEANT4_USE_FILE) and GNUmake systems, and is listed in
|
|
the flags reported by the --cflags option of the geant4-config program.
|
|
|
|
\section HowToRunMT_s2 Set number of threads
|
|
|
|
When the number of threads is not selected in the application, the default number
|
|
(which is actually 2) will be used. Another number of threads can be set in several
|
|
ways:
|
|
|
|
- in the code
|
|
\verbatim
|
|
#ifdef G4MULTITHREADED
|
|
G4MTRunManager* runManager = new G4MTRunManager;
|
|
runManager->SetNumberOfThreads(4);
|
|
#else
|
|
...
|
|
\endverbatim
|
|
|
|
- in a macro file via UI command added just before /run/initialize
|
|
\verbatim
|
|
/run/numberOfThreads 4
|
|
\endverbatim
|
|
|
|
- by setting the environment variable
|
|
\verbatim
|
|
export G4FORCENUMBEROFTHREADS = 4
|
|
or
|
|
setenv G4FORCENUMBEROFTHREADS 4
|
|
\endverbatim
|
|
|
|
The environment variable value is forced and it cannot be changed from a code
|
|
call or a macro. A warning is issued in such situation.
|
|
|
|
\section HowToRunMT_s3 Output from threads
|
|
|
|
In MT processing each worker produces its output and these messages are interlayed
|
|
on the screen. The messeges from threads are preceded with a predefined string
|
|
G4WTi> where i is the thread number. Users can change this default behaviour
|
|
and choose
|
|
|
|
- to buffer the output from each thread at a time, so that the output of each
|
|
thread is grouped and printed at the end of the job
|
|
\verbatim
|
|
/control/cout/useBuffer true|false
|
|
\endverbatim
|
|
|
|
- to limit the output from threads to one selected thread only:
|
|
\verbatim
|
|
/control/cout/ignoreThreadsExcept 0
|
|
\endverbatim
|
|
|
|
- to redirect the output from threads in a file:
|
|
\verbatim
|
|
/control/cout/setCoutFile coutFileName
|
|
/control/cout/setCerrFile cerrFileName
|
|
\endverbatim
|
|
|
|
*/
|