Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] openmpi, stdin and qlogic infiniband
From: Ralph Castain (rhc_at_[hidden])
Date: 2013-09-19 09:49:43


All that's true - use of stdin isn't encouraged by any means. However, we do support it and I've never heard of an interaction between that support and infiniband. They are in totally different sections of the code, and shouldn't have any crossover.

What the error is saying is that it can't stat the stdin file descriptor, which makes me suspicious that something in the OFED support has tampered with it. Not sure why that would happen.

I'll have to defer to someone knowledgeable in that area.

On Sep 19, 2013, at 6:37 AM, Jeff Hammond <jeff.science_at_[hidden]> wrote:

> See this related post http://lists.mpich.org/pipermail/discuss/2013-September/001452.html.
>
> The only text in the MPI standard I could find related to stdin is "assuming the MPI implementation supports stdin such that this works", which is not what I'd call a ringing endorsement of the practice of using it.
>
> Tell the AbInit people that they're wrong for using stdin. There are lots of cases where it won't work.
>
> Jeff
>
>
> On Thu, Sep 19, 2013 at 6:42 AM, Fabrice Boyrie <fboyrie_at_[hidden]> wrote:
> >
> > Hello
> >
> > I have to compile a program (abinit) reading data from stdin and it
> > doesn't works.
> >
> >
> > I made a simplified version of the program
> >
> >
> >
> > PROGRAM TESTSTDIN
> >
> > use mpi
> > integer ( kind = 4 ) error
> > integer ( kind = 4 ) id
> > integer ( kind = 4 ) p
> > real ( kind = 8 ) wtime
> > CHARACTER(LEN=255) a
> > call MPI_Init ( error )
> > call MPI_Comm_size ( MPI_COMM_WORLD, p, error )
> > call MPI_Comm_rank ( MPI_COMM_WORLD, id, error )
> >
> > if ( id == 0 ) then
> > PRINT*, "id0"
> > READ(5,'(A)') a
> > end if
> >
> > write ( *, '(a)' ) ' '
> > write ( *, '(a,i8,a)' ) ' Process ', id, ' says "Hello, world!"'
> >
> > if ( id == 0 ) then
> > write ( *, '(a)' ) 'READ from stdin'
> > write ( *, '(a)' ) a
> > end if
> > call MPI_Finalize ( error )
> >
> > stop
> > end
> >
> >
> > I've tried openmpi 1.6.5 and 1.7.2
> > The fortran compiler is ifort (tried Version 14.0.0.080 Build 20130728
> > and Version 11.1 Build 20100806)
> > (c compiler is gcc, centos 6.x, infiniband stack from qlogic
> > infinipath-libs-3.1-3420.1122_rhel6_qlc.x86_64)
> >
> > Trying with and without infiniband (qlogic card)
> >
> > mpirun -np 8 ./teststdin < /tmp/a
> > forrtl: Bad file descriptor
> > forrtl: severe (108): cannot stat file, unit 5, file /proc/43811/fd/0
> > Image PC Routine Line
> > Source
> > teststdin 000000000040BF48 Unknown Unknown Unknown
> >
> >
> >
> > mpirun -mca mtl ^psm -mca btl self,sm -np 8 ./teststdin < /tmp/a
> >
> > id0
> > Process 0 says "Hello, world!"
> > READ from stdin
> > zer
> >
> > Process 1 says "Hello, world!"
> > ...
> >
> >
> >
> > Is it a known problem ?
> >
> > Fabrice BOYRIE
> >
> >
> > _______________________________________________
> > users mailing list
> > users_at_[hidden]
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
>
>
> --
> Jeff Hammond
> jeff.science_at_[hidden]
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users