Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making qsub block until job is done?

Currently, I have a driver program that runs several thousand instances of a "payload" program and does some post-processing of the output. The driver currently calls the payload program directly, using a shell() function, from multiple threads. The shell() function executes a command in the current working directory, blocks until the command is finished running, and returns the data that was sent to stdout by the command. This works well on a single multicore machine. I want to modify the driver to submit qsub jobs to a large compute cluster instead, for more parallelism.

Is there a way to make the qsub command output its results to stdout instead of a file and block until the job is finished? Basically, I want it to act as much like "normal" execution of a command as possible, so that I can parallelize to the cluster with as little modification of my driver program as possible.

Edit: I thought all the grid engines were pretty much standardized. If they're not and it matters, I'm using Torque.

like image 293
dsimcha Avatar asked May 12 '11 18:05

dsimcha


1 Answers

You don't mention what queuing system you're using, but SGE supports the '-sync y' option to qsub which will cause it to block until the job completes or exits.

like image 79
Steve Baker Avatar answered Sep 17 '22 14:09

Steve Baker