#
Parallel job support

The `parallel` module provides methods to parallelize MODELLER calculations over multiple processors. This may be employed to make use of more than one CPU on a multi-processor machine, or of several nodes in a cluster. Each remote process is termed a ‘slave’, while the process which starts and controls the parallel job is termed the ‘master’.

Two methods for accessing the slaves from the master are provided; the first is a task-based interface (job.queue_task(), job.run_all_tasks() and job.yield_tasks_unordered()) which is largely transparent in use and fault-tolerant, while the second is a lower-level slave-master message-passing interface (job.start(), Communicator.send_data(), Communicator.get_data() and slave.run_cmd()), which is similar to MPI (although coarse-grained) and requires you to handle errors yourself. It is recommended that you use the task interface unless you require a large amount of message passing.

This module relies on several modules in the Python standard library. These modules are not provided with MODELLER, so you must additionally install Python if it is not already present on your system. It is also experimental, and may need modification to work with your own networking or parallel system.

Subsections

- job() — create a new parallel job
- sge_pe_job() — create a job using all Sun GridEngine (SGE) slave processes
- sge_qsub_job() — create a job which can be expanded with Sun GridEngine 'qsub'
- job.slave_startup_commands — Slave startup commands
- job.queue_task() — submit a task to run within the job
- job.run_all_tasks() — run all queued tasks, and return results
- job.yield_tasks_unordered() — run all queued tasks, and yield unordered results
- job.start() — start all slaves for message-passing
- Communicator.send_data() — send data
- Communicator.get_data() — get data
- slave.run_cmd() — run a command on the slave
- local_slave() — create a slave running on the local machine
- sge_pe_slave() — create a slave running on a Sun GridEngine parallel environment slave node
- sge_qsub_slave() — create a 'qsub' slave running on a Sun GridEngine node
- ssh_slave() — create a slave on a remote host accessed via ssh