Oops!  Missed that; thanks.

I've committed the change to the trunk and filed CMRs to bring the fix to v1.4 
and v1.5.  

Thanks for reporting the issue.


On Apr 22, 2011, at 1:03 AM, Stanislav Sazykin wrote:

> Jeff,
> 
> No, the patch did not solve the problem. Looking more,
> there is another place where the interfaces come up, in
> mpi-f90-interfaces.h.sh in ompi/mpi/f90/scripts
> 
> If I manually change the two arguments to arrays from scalars
> in both scripts after running configure but before "make",
> then it works.
> 
> Stan Sazykin
> 
> 
> On 4/21/2011 11:07, Jeff Squyres wrote:
>> I do believe you found a bona-fide bug.
>> 
>> Could you try the attached patch?  (I think it should only affect f90 
>> "large" builds)  You should be able to check it quickly via:
>> 
>> cd top_of_ompi_source_tree
>> patch -p0<  scatterv-f90.patch
>> cd ompi/mpi/f90
>> make clean
>> rm mpi_scatterv_f90.f90
>> make all install
>> 
>> 
>> 
>> On Apr 21, 2011, at 10:37 AM, Stanislav Sazykin wrote:
>> 
>>> Hello,
>>> 
>>> I came across what appears to be an error in implementation of
>>> MPI_scatterv Fortran-90 version. I am using OpenMPI 1.4.3 on Linux.
>>> This comes up when OpenMPI was configured with
>>> --with-mpi-f90-size=medium or --with-mpi-f90-size=large
>>> 
>>> The standard specifies that the interface is
>>> MPI_SCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF,
>>>        RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
>>>    <type>     SENDBUF(*), RECVBUF(*)
>>>    INTEGER    SENDCOUNTS(*), DISPLS(*), SENDTYPE
>>> 
>>> so that SENDCOUNTS and DISPLS are integer arrays. However, if
>>> I compile a fortran code with calls to MPI_scatterv and compile
>>> with argument checks, two Fortran compilers (Intel and Lahey)
>>> produce fatal errors saying there is no matching interface.
>>> 
>>> Looking in the source code of OpenMPI, I see that  in
>>> ompi/mpi/f90/scripts, the script mpi_scatterv_f90.f90.sh that
>>> is invoked when running "make" produces Fortran interfaces
>>> that list both SENDCOUNTS and DISPLS as
>>> 
>>> integer, intent(in) ::
>>> 
>>> This appears to be an error as it would be illegal to pass a scalar
>>> variable and receive it as an array in the subroutine. I have not
>>> figured out what happens in the code at this invocation (the code
>>> is complicated), but seems like a segfault situation.
>>> 
>>> --
>>> Stan Sazykin
>>> _______________________________________________
>>> users mailing list
>>> us...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> 
>> 
>> 
>> 
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to