- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello ![smiley [:-)]](/isn/Community/en-US/emoticons/emotion-1.gif)
I've made the following observation. When a program make a (sequential) READ e.g.:
READ (UNIT) ((FIELD(I,J),I=1,N),J=1,N)
then the running process consumes an extra amout of memory afterwards. I.e. before the READ statement the process has allocated once the size of the array FIELD and after the READ statement the process has allocated twice the size. And this 'extra' amount of memory is not(!) freed during the execution of the subroutines afterwards.
Because I use huge arrays (>1GB) this 'buffer' memory takes away urgently needed memory, unfortunately.
I already tried the compile option '-assume nobuffered_io' and 'BUFFERED=NO' in the OPEN statement for the tape. But the behaviour doesn't change.
I also tried the ifort versions 7,8,9 and 10. But only the version 7 is 'problem free' in that case.
Has anyone an idea how one can force the freeing of this extra 'buffer' memory directly after the READ statement?
Thanks in advance,
Gerald Geudtner
![smiley [:-)]](/isn/Community/en-US/emoticons/emotion-1.gif)
I've made the following observation. When a program make a (sequential) READ e.g.:
READ (UNIT) ((FIELD(I,J),I=1,N),J=1,N)
then the running process consumes an extra amout of memory afterwards. I.e. before the READ statement the process has allocated once the size of the array FIELD and after the READ statement the process has allocated twice the size. And this 'extra' amount of memory is not(!) freed during the execution of the subroutines afterwards.
Because I use huge arrays (>1GB) this 'buffer' memory takes away urgently needed memory, unfortunately.
I already tried the compile option '-assume nobuffered_io' and 'BUFFERED=NO' in the OPEN statement for the tape. But the behaviour doesn't change.
I also tried the ifort versions 7,8,9 and 10. But only the version 7 is 'problem free' in that case.
Has anyone an idea how one can force the freeing of this extra 'buffer' memory directly after the READ statement?
Thanks in advance,
Gerald Geudtner
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can't free the memory. Will a simple:
READ (UNIT) FIELD
not work instead? That is much more efficient.
"buffering" refers to combining records to make the I/O more efficient (fewer reads or writes) - it does not affect memory buffering of I/O.
READ (UNIT) FIELD
not work instead? That is much more efficient.
"buffering" refers to combining records to make the I/O more efficient (fewer reads or writes) - it does not affect memory buffering of I/O.

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