- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We're trying to understant what the Intel compiler (on Mac OS X) is doing forrecords larger than 4GB in unformatted files, which cause the integer*4 leading and trailing record lengths to overflow. According to Intel documentation (Intel Fortran Compiler User and Reference Guides, pp. 216-218 ), seems to indicate that the records will be subdivided into sub records. The leading length field has the sign bit set to 1, while the trailing one has the sign bit set to zero for subrecord 1. For the last subrecord, this is flipped while for intermediate subrecords the sign bit is set for both leading and trailing field. However, when you actually look at the data, the record lengths make no sense. There are actually 3 fields in-between subrecords and the record lengths dont look right either. We would like to know how Intel actually is decoding these files as it does not seem to match the documentation.
Here is a simple example compiled with ifort 11.1 20100806 or 12.0.2on the Mac:
program main
integer n,nx, iw(2**29+2)
nx = 2**29+2
iw=1
do n=nx-4,nx
iw(n) = 2
enddo
open(unit=15,form='unformatted')
write(15) (iw(n),n=1,nx)
close(15)
end program main
Using od to look at the values in the file:
% od -i fort.15
0000000 -2147483639 1 1 1
0000020 1 1 1 1
*
17777777760 1 1 -150994942 293601279
20000000000 0 2 2 2
20000000020 2 -17
20000000030
As one can see, there are 3 fields: -150994942 293601279 0 between the two subrecords. And in this case, one of the records appears to be zero!
Link Copied
0 Replies

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page