|Message: Question on accessing G4 from different threads||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
Dear all, we are using Geant4 in our simulation framework to generate initial energy deposition in the sensitive volumes. The main work, however, is performed independently from Geant4. We have therefore encapsulated the Geant4 access in just one small module of our framework while the rest is independent of G4. Currently, our framework uses just one thread and processes events sequentially. Each event consists of one call to Geant4's BeamOn and several processing steps in our own modules. In order to speed up event generation on multi-core machines, we are currently working on implementing multi-threaded simulation where multiple events are processed in different threads in parallel. We are however facing some issues in how to talk to Geant4 in this set-up and hope that you could help us out here. We understand that we cannot make multiple calls to BeamOn in parallel and that Geant4's multi-threading capabilities are completely encapsulated inside its run function. What we would like to do is to have one instance of Geant4 running, but have calls to BeamOn from different threads, secured by a mutex lock. This however does not seem to be possible as Geant4 initializes things like its logging facilities depending on the process it is called from. For us this seems to imply, after calling BeamOn from process 1, we cannot make a subsequent call to it from process 2 for the second event. Is there any solution to this? Can we force Geant4 to initialize everything in the main thread before calling BeamOn for the first time? Is there a way to allow calls from other processes afterwards? Or would it be possible to have independent instances of Geant4 for each of the worker threads? Some guidance would be very much appreciated. Best regards, Simon
|Inline Depth:||Outline Depth:||Add message:|