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