Hi,

Am 11.03.2010 um 03:03 schrieb Brian Smith:

This may seem like an odd query (or not; perhaps it has been brought up
before).  My work recently involves HPC usability i.e. making things
easier for new users by abstracting away the scheduler.  I've been
working with DRMAA for interfacing with DRMs and it occurred to me: what
would be the advantage to letting the scheduler itself handle farming
out MPI processes as individual tasks rather than having a wrapper like
mpirun to handle this task via ssh/rsh/etc.?

I thought about MPI2's ability to do dynamic process management and how
scheduling environments tend to allocate static pools of resources for
parallel tasks.  A DRMAA-driven MPI would be able to request that the
scheduler launch these tasks as resources become available enabling
scheduled MPI jobs to dynamically add and remove processors during
execution.  Several applications that I have worked with come to mind,
where pre-processing and other tasks are non-parallel whereas the
various solvers are. Being able to dynamically spawn processes based on
where you are in this work-flow could be very useful here.

when I get you in the correct direction of the calls, the MPI library should issue via DRMAA the startup of tasks to the DRM. So the complete flow would be:

user => DRMAA.a for MPI application => scheduled MPI application => DRMAA.b for tasks => scheduled MPI tasks

IMO the DRMAA.b must be available at some point, as none of the queuingsystems I have access to can cope with varying needs of a job during a jobs lifetime. Besides rising and lowering the number of cores you need, the same applies to memory requests. It was quite some often on the SGE mailing list, that a job needs a certain amount of memory for some time:

- 2 GB for 4 hrs
- 4 GB for 20 min
- 1 GB for 6 hrs

There is no interface for now to let a running application tell the DRM the changed needs - you can only submit it with the maximum request. As you wouldn't like to have your job halted in the middle, it would need a new syntax in DRMAA to let the DRM know the maximum and current needs, so that the gaps could be filled with other jobs. These other jobs would also need one extension: some kind of flag "suspendable" . These nice jobs could then run in some way in the leftover resources but would be halted at any point (or pushed out of the system) for some time.


It also occurred to me that commercial application vendors tend to
roll-their-own when it comes to integrating their applications with an
MPI library.  I've seen applications use HP-MPI, MPICH, MPICH2,
Intel-MPI, (and thankfully, recently) OpenMPI and then proceed to
butcher the execution mechanisms to such an extent that it makes
integration with common DRM systems quite a task. With the exception of
OpenMPI, none of these libraries provides turn-key compatibility with
most of the major DRMs and each require some degree of manual
integration and testing for use in a multi-user production environment. I would think that vendors would be falling over themselves to integrate
OpenMPI with their applications for this very reason alone.  Instead,
some opt to develop their own scheduling environments! Don't they have
bean counters that sit around and gripe about duplicated work?

I think there are some reasons: a) history - maybe their custom built scheduling was already available at a time when there was no wide spread use of a DRM, b) at that time it was one big machine with many users and not the nowadays common clusters with nodes and maybe also a third point c) due to limited resources they were on the opinion that the user will use only their application and is also the only user of a cluster. d) they wanted to provide a workflow solution, even if someone don't like to install a queuing system just on a local workstation (I install SGE even local on each users machine for small things - same syntax like in the cluster, and their machines won't get overloaded - but I'm sure it's not common practice).

But you are right, this leads to a situation where you have to combine two queuingsystems. Let's say one example: the applications from Schrodinger. When you have machines with only their software, then you can teach your users to use their commands. When you want to use a DRM anyway because you have other applications and groups of users: there are hocks available to forwards Schrodinger's "foobar kill" to a "qdel" to integrate it with various queuingsystems. But this means the users have to think about: I kill job type A and D with "qdel", but for B and C I have to use "foobar kill" - not to mention that you have two <jobid>s to handle. For now I failed to leave their queuing system out and start the jobs directly.


Then it occurred to me: with the exception of being able to easily
launch an MPI job with OpenMPI, the ability to monitor it from within
the application is still dependent on the vendor integrating with
various DRMs! This is another area where a DRMAA RAS can come in handy.
There are nice bindings for monitoring tasks and getting an idea of
where you are in execution without having to resort to kludgey
shell-script wrappers tailing output files.

Anyway, its been a frustrating couple of weeks dealing with several
commercial vendors and integrating their applications with

Yeah, I know...

-- Reuti


our DRM and
my mind has been trying to think of a solution that could save all of us a lot of work (though, at the same time, raise job security concerns in
such turbulent times ;-/ ).  What say you, MPI experts?

Many thanks for your thoughts!
-Brian




_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users

Reply via email to