I thought the error was this:

$ mpif90 -o simplex simplexmain579m.for simplexsubs579
/usr/local/openmpi-1.2.8/intel-11/x86_64/include/mpif-config.h(88):
error #6406: Conflicting attributes or multiple declaration of name.
[MPI_STATUS_SIZE]
     parameter (MPI_STATUS_SIZE=5)
-----------------^
simplexmain579m.for(147): error #6591: An automatic object is invalid in
a main program.   [ISTATUS]
       integer ierr,istatus(MPI_STATUS_SIZE)
---------------------^

which seems to only show the definition in mpif-config.h (which is an internal 
OMPI file).  I could be mis-interpreting those compiler messages, though...

Off-the-wall guess here: is the program doing both "use mpi" *and* "include 
mpif.h" in the same subroutine...?


On Feb 23, 2011, at 11:51 AM, Tim Prince wrote:

> On 2/23/2011 8:27 AM, Prentice Bisbal wrote:
>> Jeff Squyres wrote:
>>> On Feb 23, 2011, at 9:48 AM, Tim Prince wrote:
>>> 
>>>>> I agree with your logic, but the problem is where the code containing
>>>>> the error is coming from - it's comping from a header files that's a
>>>>> part of Open MPI, which makes me think this is a cmpiler error, since
>>>>> I'm sure there are plenty of people using the same header file. in their
>>>>> code.
>>>>> 
>>>> Are you certain that they all find it necessary to re-define identifiers 
>>>> from that header file, rather than picking parameter names which don't 
>>>> conflict?
>>> 
>>> Without seeing the code, it sounds like Tim might be right: someone is 
>>> trying to re-define the MPI_STATUS_SIZE parameter that is being defined by 
>>> OMPI's mpif-config.h header file.  Regardless of include 
>>> file/initialization ordering (i.e., regardless of whether mpif-config.h is 
>>> the first or Nth entity to try to set this parameter), user code should 
>>> never set this parameter value.
>>> 
>>> Or any symbol that begins with MPI_, for that matter.  The entire "MPI_" 
>>> namespace is reserved for MPI.
>>> 
>> 
>> I understand that, and I checked the code to make sure the programmer
>> didn't do anything stupid like that.
>> 
>> The entire code is only a few hundred lines in two different files. In
>> the entire program, there is only 1 include statement:
>> 
>> include 'mpif.h'
>> 
>> and MPI_STATUS_SIZE appears only once:
>> 
>> integer ierr,istatus(MPI_STATUS_SIZE)
>> 
>> I have limited knowledge of Fortran programming, but based on this, I
>> don't see how MPI_STATUS_SIZE could be getting overwritten.
>> 
>> 
> Earlier, you showed a preceding PARAMETER declaration setting a new value for 
> that name, which would be required to make use of it in this context.  
> Apparently, you intend to support only compilers which violate the Fortran 
> standard by supporting a separate name space for PARAMETER identifiers, so 
> that you can violate the MPI standard by using MPI_ identifiers in a manner 
> which I believe is called shadowing in C.
> 
> -- 
> Tim Prince
> _______________________________________________
> 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