I have been investigating Ticket #1135 - stdin is read twice if rank=0 shares the node with mpirun. Repairing this problem is going to be quite difficult due to the rather terrible spaghetti code in the IOF, and the fact that the IOF in the HNP actually rml.sends the IO to itself multiple times as it cycles through the spaghetti.
Unfortunately, this problem -is- a regression from 1.2. Rather than spending weeks trying to fix it, I see two approaches we could pursue. First, I could repair the problem by essentially returning the IOF to its 1.2 state. This will have to be done by hand as most of the differences are in function calls to utilities that have changed due to the removal of the old NS framework. However, there are a few places where the logic itself has been modified - and the problem must stem from somewhere in there. If I make this change, then we will be no better, and no worse, than 1.2. Note that we currently advise people to read from a file instead of from stdin to avoid other issues that were present in 1.2. Alternatively, we could ship 1.3 as-is, and warn users (similar to 1.2) that they should avoiding reading from stdin if there is any chance that rank=0 could be co-located with mpirun. Note that most of our clusters do not allow such co-location - but it is permitted by default by OMPI. We already plan to revisit the IOF at next week's technical meeting, with a goal of redefining the IOF's API to a more reduced set that reflects a less ambitious requirement. I expect to implement those changes fairly soon thereafter, but that would be targeted to 1.4 - not 1.3. Any thoughts on which way we should go? Ralph