Available in a git repository.
Repository: sawsim
Browsable repository: sawsim
Author: W. Trevor King
Over the past week I've been working up a Python framework for my
sawsim simulator, to allow parallel execution on a variety of
systems. I think I've got the kinks worked out now, and sawsim
(or
anything else that can subclass pysawsim.manager.Job
can now be
transparently executed in parallel using any of
- Python's threading module (the
thread
manager). - Python's multiprocessing module (the
subproc
manager). - MPI (via mpi4py, the
mpi
manager). - PBS (via pbs_python, the
pbs
manager).
Most of the difficulty is in handling systems where not all of these
approaches are viable, (e.g. Python 2.5, so no multiprocessing
module, or an SMP host that wants to use subproc
without installing
mpi4py or pbs_python). I also ran up against Python's issue5155
when I tried to test the subproc
manager from within a:
$ nosetests --with-doctest --doctest-tests --processes $N pysawsim
on a Python 2.6.2 system (it was fixed by 2.6.3).
Note that Python's GIL restricts threads to a single core. This
means that the thread
manager is basically decorative, but I wrote
it anyway because it forms the basis of several other managers, and
it's the only manager that will definitely work on Python 2.5.