|
It depends on what you mean by "useful".
By design, Geant4 is a single-threaded, single-process program. This
allows for maximum portability, because forking/threading is performed
differently depending on the CPU architecture. Thus, a single Geant4 process
will not, for instance, "automatically" use both processors on a dual-CPU
machine.
However, if you split your jobs up intelligiently, this same machine can run
two Geant4 processes at the same time, which is often very useful. It is
equivalent to having two different machines running separate jobs. Depending
on the particulars of your jobs, it may be useful to "manually" batch your
jobs into groups of 100, 500 or 1000 events (for instance).
Additionally, Geant4 can be made to support parallel computation. In general,
this should be performed at the event level, i.e. dispatching single events to
each machine in your cluster. Using more granular dispatch methods, such
as for steps, tracks, etc. is likely to give poor performance due to the
overhead of data transfer, synchronization, etc.
Examples of parallel computation using Geant4 can be found in
$G4INSTALL/examples/extended/parallel.
The only implementation of parallel processing of which I'm aware uses
the TOP-C library: http://www.ccs.neu.edu/home/gene/topc.html.
I don't know of any implementations using the more typical PVM or MPI libraries.
I hope that helps.
|