Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/README.HowToRunMT

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 -------------------------------------------------------------------
  2 
  3      =========================================================
  4      Geant4 - an Object-Oriented Toolkit for Simulation in HEP
  5      =========================================================
  6 
  7         Tips how to run an example in multi-threading mode
  8         --------------------------------------------------
  9 
 10  Only migrated examples or user applications can be run in multi-threading (MT) mode. 
 11  The instructions for migrating user applications can be found in Geant4 documentation guides 
 12  and a short howto is available here:
 13  
 14  https://twiki.cern.ch/twiki/bin/view/Geant4/QuickMigrationGuideForGeant4V10 
 15 
 16  In this file, we give just useful tips for running already migrated examples
 17  (or user applications).
 18 
 19  1) RUN EXAMPLE IN MULTI-THREADING MODE
 20 
 21  No special steps are needed to build an example in multi-threading (MT) mode.
 22  The examples which has been migrated to multi-threading will automatically 
 23  run in MT when they are built against the Geant4 libraries built with MT mode
 24  activated, otherwise they will run in sequential mode.
 25  Not migrated examples will run in sequential mode even when built against
 26  Geant4 libraries built with MT mode activated.
 27 
 28  The examples which do NOT support MT can be easily recognized by the following line
 29  of code in main ():
 30 
 31    G4RunManager* runManager = new G4RunManager;
 32 
 33 or
 34 
 35    auto* runManager = G4RunManagerFactory::CreateRunManager(G4RunManagerType::SerialOnly);
 36 
 37  2) SET NUMBER OF THREADS
 38 
 39  When the number of threads is not selected in the application, the default number
 40  (which is actually 2) will be used. Another number of threads can be set in several
 41  ways:
 42 
 43  - in the code
 44 
 45    auto* runManager = ...;
 46    runManager->SetNumberOfThreads(4);
 47 
 48  - in a macro file via UI command added just before /run/initialize
 49 
 50    /run/numberOfThreads 4
 51 
 52  - by setting the environment variable 
 53   
 54    export G4FORCENUMBEROFTHREADS = 4  
 55    or
 56    setenv G4FORCENUMBEROFTHREADS 4
 57 
 58  The environment variable value is forced and it cannot be changed from a code 
 59  call or a macro. A warning is issued in such situation.
 60 
 61  3) OUTPUT FROM THREADS
 62 
 63  In MT processing each worker produces its output and these messages are interlayed
 64  on the screen. The messeges from threads are preceded with a predefined string 
 65  G4WTi> where i is the thread number.  Users can change this default behaviour 
 66  and choose
 67 
 68  - to limit the output from threads to one selected thread only: 
 69 
 70   /control/cout/ignoreThreadsExcept 0
 71 
 72  - to redirect the output from threads in a file:
 73 
 74    /control/cout/setCoutFile coutFileName
 75    /control/cout/setCerrFile cerrFileName
 76 
 77  - to buffer the output from each thread at a time, so that the output of each
 78    thread is grouped and printed at the end of the job
 79 
 80    /control/cout/useBuffer true|false