This should be in a design document but.... Random thoughts on stdio redirection. - stdin redirection should be buffered (i.e. fragment-based). stdin should go to process 0. Any need to broadcast stdin? - stdout/stderr also buffered. Fragment headers: to indicate origin, and to handle out of order delivery in future distributed situations. - pipes or ptys from ompid to processes. Fairly portable pty code is in src/util/pty.c. Goal: wrap up selection of pipes vs ptys in a transparent fashion for easy selection at compile- or run-time (MCA parameter-based I guess). Note ptys are typically necessary when stdin is a tty so that interactive input is possible. - stdin redirection: base this on LA-MPI's rts/cts fragment-based approach. - Consider basing ompid -> mpirun stdout/stderr redirection on FTMPI libcio/sio ported to use oob framework (tcp component for non-blocking operation). In this directory: libcio/sio are the client and server parts of the FTMPI stdout and stderr I/O forwarding. snipe_lite is a close analog of our OOB Explanatory email from Thara: From: angskun@cs.utk.edu Subject: Re: libsio, libcio Date: August 13, 2004 13:11:14 MDT To: ddd@lanl.gov Cc: fagg@cs.utk.edu Dear David, Everything in snipe_lite directory is for basic connection management in FT-MPI. The libcio/sio use the snipe_lite for communication. You may replace it with socket or OpenMPI communication library. cioapp.c : client/console/ application example sioapp.c : server/daemon application example libcio.*, libsio.* : the library and include file Example: *** client/console machine *** [angskun@torc0 ~/ioapp]$ ./cioapp 3 Port is 6781 [0:stdout] Hi world, my name is foo 1/5 [bar code is 0 (pid 19409)] Hi world, my name is foo 2/5 [bar code is 0 (pid 19409)] Hi world, my name is foo 3/5 [bar code is 0 (pid 19409)] Hi world, my name is foo 4/5 [bar code is 0 (pid 19409)] Hi world, my name is foo 5/5 [bar code is 0 (pid 19409)] [1:stdout] Hi world, my name is foo 1/5 [bar code is 1 (pid 19410)] Hi world, my name is foo 2/5 [bar code is 1 (pid 19410)] Hi world, my name is foo 3/5 [bar code is 1 (pid 19410)] Hi world, my name is foo 4/5 [bar code is 1 (pid 19410)] Hi world, my name is foo 5/5 [bar code is 1 (pid 19410)] [2:stdout] Hi world, my name is foo 1/5 [bar code is 2 (pid 19411)] Hi world, my name is foo 2/5 [bar code is 2 (pid 19411)] Hi world, my name is foo 3/5 [bar code is 2 (pid 19411)] Hi world, my name is foo 4/5 [bar code is 2 (pid 19411)] Hi world, my name is foo 5/5 [bar code is 2 (pid 19411)] [angskun@torc0 ~/ioapp]$ *** server / daemon machine *** $./sioapp torc0 6781 3 Best Regards, Thara ----- Original Message ----- From: "David Daniel" To: "THara Angskun" Cc: "Graham E Fagg" Sent: Friday, August 13, 2004 2:09 PM Subject: libsio, libcio Thara I'm looking at using libcio/sio as a starting point for standard I/O redirection in Open MPI. Graham mentioned that you had some tests for testing them on their own. If you could let me have a copy that would be very helpful. Thanks, David -- David Daniel +1-505-667-0883 Advanced Computing Laboratory, LANL, MS-B287, Los Alamos NM 87545, USA