"W. J. Metzger" wrote:
> In light of the present discussion as to the desirability of the limit
> of 7 (or perhaps I should say requirement of at least 7), the following is
> perhaps interesting. I checked on all the compilers I have access to
> whether a routine with an array of rank 10 would compile.
>
> f77 compiler f90 compiler
> sgi OK error - limit of 7
> hp OK error - limit of 7
> aix (only 1 compiler) OK
> sun OK error - limit of 7
> g77 error - limit of 7
> pgi error - limit of 7 error - limit of 7
> lahey OK with warning
> intel ifc error - limit of 7
>
> It would seem that the trend is in the wrong direction: Vendors whose
> compilers used to allow more are now not allowing more than 7.
> Since these are also hardware vendors, and since the hardware is the same,
> the change cannot be because of hardware limitations.
I can offer a possible explanation. In Fortran 90, compilers need to deal with
"array descriptors", i.e. arrays that are non-contiguous in memory (in Fortran 77,
arrays were just a matter of index calculation in a simple loop). For example,
copying a rank-10 non-contiguous section into another such section may require
quite a bit of tricks to do efficiently. Also, compilers usually have just 7 types
of descriptors (say declared as structures in C--NAG calls these Dope1,..., Dope7
for example). If their users complain, it is not that hard to increase this, but
otherwise vendors seem to choose to do the least work possible :(
Aleksandar
|