mpiexec conf file versus pg file
Christopher D. Maestas
cdmaest at sandia.gov
Mon Feb 10 15:33:16 EST 2003
Pete,
Thanks for the feedback. We do split up the MPI_COMM_WORLD with the two executables.
I shoulda detailed this example first. We do the following:
qsub -I -l nodes=2:vis+2:storage
mkpbspgfile --pgfile=mypgfile storage:/usr/local/ioproc/ioproc vis:"/usr/local/ccaffeine/dccafe/cxx/dc/user_iface/demo-client --file /home/user1/processors --port 4539"
cat mypgfile
--- mypgfile
vis1 0 /usr/local/ccaffeine/dccafe/cxx/dc/user_iface/demo-client --file /home/user1/processors --port 4539
vis2 1 /usr/local/ccaffeine/dccafe/cxx/dc/user_iface/demo-client --file /home/user1/processors --port 4539
storage1 1 /usr/local/ioproc/ioproc
storage2 1 /usr/local/ioproc/ioproc
--- mypgfile
The problem is that mpirun and pg files don't deal well with arguments passed into an mpi executable.
(I submitted a feature request to mpi-maint at mcs.anl.gov). So when you do:
mpirun -pg mypgfile echo # doesn't matter for exe arg
it fails to read in the arguments for the executables.
So I'd like to request trying to do this with mpiexec instead.
qsub -I -l nodes=2:vis+2:storage
mkpbsmpiexecfile --mpiexecfile=mympiexecfile storage:/usr/local/ioproc/ioproc vis:"/usr/local/ccaffeine/dccafe/cxx/dc/user_iface/demo-client --file /home/user1/processors --port 4539"
cat mympiexecfile
--- mympiexec file
storage1 : /usr/local/ioproc/ioproc
vis1 : /usr/local/ccaffeine/dccafe/cxx/dc/user_iface/demo-client --file /home/user1/processors --port 4539
--- mympiecec file
mpiexec -config=mympiexecfile
Is this possible?
Regards,
On Fri, 7 Feb 2003, Pete Wyckoff wrote:
> cdmaest at sandia.gov said:
> > All 4 tasks started.
> > read_gm_startup_ports: waiting for info
> > read_gm_startup_ports: id 2 port 2 board 0 gm_node_id 203 pid 2878
> > read_gm_startup_ports: id 3 port 2 board 0 gm_node_id 202 pid 20417
> > hello
> > goodbye
> [..]
> > And it hangs ... Is it not possible to do a multiple program job launch with mpiexec using two
> > mpiprograms?
>
> It would not be easy.
>
> What's happening above is that mpiexec thinks you have a single MPI job
> with four tasks. It is waiting to get information from each of them so
> that it can construct a global map of the GM connections and send it
> back out to all the tasks which can then proceed past MPI_Init. But
> "echo" isn't acting like an MPICH/GM code, obviously. :)
>
> And you can't even get away with something like:
> mpiexec -np 2 code1 &
> mpiexec -np 2 code2
> because the TM interface in PBS doesn't allow more than one startup
> connection per job for some reason.
>
> It is true that mpiexec could be modified to be able to express what
> you're trying to do with some config file extensions, but can I
> recommend that you just get two PBS jobs, each with half the nodes (or
> processors), and run a single mpiexec in each? You could also break up
> MPI_COMM_WORLD into a pair of communicators, one for each of your
> sub-jobs, and let them proceed essentially independently but within the
> context of a single MPI parallel process.
>
> -- Pete
>
-- Chris
More information about the mpiexec
mailing list