- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Are there any inherent size limit for record length or matrix size/number of entries? I am generating a large 1-D complex*16 array which contains all non-zero items for a large linear equation matrix. The largest one I can get is about 2x10^9 items, or about 60GB (Lager than that the program runs but no output, although there is no error message either). Are these numbers reach the internal limits? If yes, is there anyway I can increase these limits? (The array is to be used in PARDISO which requires a 1-D array for non-zero entries). I am using Fortran Visual Composer XE 2011.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There is no internal limit on array size. However, in an OPEN statement the RECL= value is limited to 2GB due to an implementation limit (we are working to lift that). If you are using sequential unformatted files you can write out larger records, but can't make them fixed length. I assume this is on a 64-bit system, otherwise you'd get nowhere near 60GB. This is an allocatable array, yes?
You say there is no output - even before the array is created? WIndows has this annoying habit of simply causing an executable to exit if it thinks virtual memory space is exhausted. Do you have 60GB of pagefile space available? Can you show a simple program that demonstrates the problem?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, it is on a 64-bit system (Winserver 2008 R2) and it is an allocatable array. In fact, the machine has 1TB RAM installed, so I think the virtual memory size may be not the problem. The output of the program consists two files, a text files for all parameters, run controls, error messages, etc., and a binary file (in unformatted form) which has a few MB of headers and thens the assembled global matrix to be solved using PARDISO. If the non-zero items in the matrix is more than about 2*10^9, I got only a few MB of headers for the binary file, but there is no recorded error message and no on-screen error messages in a command window. Do you think this 2GB limit in RECL= is for file size, or for 2G distinct items in the record so there is enough addressable locations? Because I somehow can write a unformatted file with >60GB size so I assume it should not be the file size limit. Could you give me some suggestions or confirmations?
This problem would be difficult to simplify at this moment (this matrix takes about 2 days to generate on a 2.6 GHz server), I will test first the assumption that the RECL= limit of 2G is for the addressable locations. I'll report the results later.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The RECL= limit is a limit on the value you can specify in an OPEN statement for the length of a fixed-length record. There is no correlation with file size. The issue is that the value is treated as a 32-bit integer - if you put in a larger value you may get bad results. If you are not using RECL= then this is not relevant.
So the program does start to run - is it the call to PARDISO that stops the output?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the explanation. I didn't use the RECL= statement for this unformatted file. So I guess it must be some other reasons.
The program does run, except it didn't save the binary output if the array size is too big. This program is to prepare the matrix for PARDISO, PARDISO hasn't been called yet.

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