Example: User 1 submits a job which needs 1 server, 2 linux clients, 1 windows client User 2 submits a job which needs 2 servers, 2 linux clients, 2 windows clients
Condor can do this with the parallel universe with multiple procs. With a submit file that looks something like:
######################## universe = parallel executable = the_binary requirements = (opsys == "WINNT51") machine_count = 3 queue requirements = (opsys == "LINUX") machine_count = 7 queue #########################This will create one parallel job with two "procs", the first of which requires 3 windows machines, the other, 7 linux machines. Condor will wait until all 10 machines are available, then launch the job on those machines. (Of course, the jobs will not launch on each machine completely simultaneously, so you may need to be aware of race conditions at startup).
To do this, you'll need to configure your schedd to be a dedicated scheduler, as described in
http://research.cs.wisc.edu/condor/manual/v7.8/3_12Setting_Up.html#SECTION004129000000000000000 An example of running jobs like this is described here: http://research.cs.wisc.edu/condor/manual/v7.8/2_9Parallel_Applications.html#SECTION00393000000000000000It is best if the requirements for machines in each proc in the same job are mutually exclusive, as Condor won't try to match every permutation of every possible machine to every possible part of a parallel job.
Let us know how this works for you, -Greg