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/