Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29236 Discussions

Intel Visual Fortran array descriptor structure ?

galatyp
Beginner
904 Views
Could anyone please provide me internal array descriptor structure of IVF compiler ?
I've done a little search and gatheredinformationbelow in Google.
------Quote------
  • The first longword (bytes 0 to 3) contains the base address. The base address plus the offset defines the first memory location (start) of the array.
  • The second longword (bytes 4 to 7) contains the size of a single element of the array.
  • The third longword (bytes 8 to 11) contains the offset. The offset is added to the base address to define the start of the array.
  • The fourth longword (bytes 12 to 15) contains the low-order bit set if the array has been defined (storage allocated). Other bits may also be set by the compiler within this longword, for example, to indicate a contiguous array.
  • The fifth longword (bytes 16 to 19) contains the number of dimensions (rank) of the array.
  • The remaining longwords (bytes 20 up to 103) contain information about each dimension (up to seven). Each dimension is described by three additional longwords:
    • The number of elements (extent)
    • The distance between the starting address of two successive elements, in bytes.
    • The lower bound

-----End of Quote-----

I guess this definiton is for Compaq's Fortran compiler, i wonderif this is valid for Intel Fortran Compiler too ? If not could you please provide me correct structure ?

Thanks in advance...

Message Edited by GalaTyp on 02-10-2006 08:19 AM

0 Kudos
4 Replies
Steven_L_Intel1
Employee
904 Views
The text you quote is from CVF's Programmer's Guide. The IVF equivalent, and it is NOT the same, is in the Building Applications manual, mixed-language programming chapter.
0 Kudos
galatyp
Beginner
904 Views
Hi, Steve;
I'm using 7.1 version, there's no such manual like "Building Applications". I've searched in internet andfound this sectionin9.0 version.it states that;
---Quote From Intel Manual 9.0----

Array descriptor formats are specific to each Fortran compiler. Code that uses array descriptors is not portable to other compilers or platforms. For example, the current Intel Fortran array descriptor format differs from the array descriptor format for Intel Fortran 7.0.

  • The first longword (bytes 0 to 3) contains the base address. The base address plus the offset defines the first memory location (start) of the array.

  • The second longword (bytes 4 to 7) contains the size of a single element of the array.

  • The third longword (bytes 8 to 11) contains the offset. The offset is added to the base address to define the start of the array.

  • The fourth longword (bytes 12 to 15) contains the low-order bit set if the array has been defined (storage allocated). Other bits may also be set by the compiler within this longword, for example, to indicate a contiguous array.

  • The fifth longword (bytes 16 to 19) contains the number of dimensions (rank) of the array.

  • The sixth longword (bytes 20 to 23) is reserved.

  • The remaining longwords (bytes 24 up to 107) contain information about each dimension (up to seven). Each dimension is described by three additional longwords:

    • The number of elements (extent)

    • The distance between the starting address of two successive elements in this dimension, in bytes.

    • The lower bound

----End of Quote----

Where can i find the same information for 7.1 version ?

Message Edited by GalaTyp on 02-10-2006 09:50 AM

0 Kudos
Steven_L_Intel1
Employee
904 Views
Ah, you're using 7.1. All bets are off. The layout changed in version 8 and I have no idea what version 7.1 used nor is there any documentation for it.

My advice is to switch to a more recent compiler.
0 Kudos
jim_dempsey
Beginner
904 Views

Galatyp,

You could write a small routine that youcall at the start of the application that verifies the programming assumptions of the array descriptor. This way you can use what is known now and be notified later if a significant change is made. And while you are doing this write a set of access routines such that all of code dependent on the array descriptors are within the same program module.

Jim Dempsey

0 Kudos
Reply