[comp.os.msdos.programmer] Running long memory intensive programs!

dlindsle@afit.af.mil (David T. Lindsley) (06/14/91)

tholen@hale.ifa.hawaii.edu (Dave Tholen) writes:

>Microsoft recently announced version 5.1 of their FORTRAN compiler, with
>extensive Windows support, including the use of extended memory.  To quote
>from their brochure:

>   "Access all virtual memory on a PC with an 80386 or higher processor,
>   up to 64 megabytes.

>   Access all extended memory on a PC with an 80286 processor."

I read about that too in one of the PC journals.  They even had a 800
number you could call.  I did.  What I got was
"The number you have reached -- xxx-xxxx -- has been disconnected."

Using virtual paging to access extended memory is one thing.  What I
want to know is, what's the page size?  Like I said, I'm interested in
using large arrays.  An array reference A(i,j) into an n by m matrix
usually is computed as 
  <value at (address of array  + offset)>
= <value at (address of A(1,1) + ((j-1)*n) + i)>.
(This assumes column-major storage, but for row-major storage you'd
just swap i and j in the formula.)  Note that the address formula will
consist of two far (20-bit) pointers (on a 286 or less, or in code
generated by a non-386 compiler).

So -- and this is the million-dollar question -- what happens if and
when an array is bigger than (min(page_size, 640K))?  When, in other
words, the offset may be larger than 1MB, and therefore cannot be
stored as a 20-bit pointer?  Does the VM scheme allow for segmenting
data across page/1M boundaries?

That, incidentally, is what I called Microsoft's 800 number to find
out.  I think this is a legitimate question -- FORTRAN is, after all,
the standard language for numerical work, and matrices with (say) 500
rows and columns are not all that unusual.  (Whether that sort of work
ought to be done on a PC is another question, but you can't argue too
loudly about the customer's equipment when you're a mere consultant.)

Anybody had experience with this sort of thing?  Am I missing something
obvious here? 

Please note that I have directed followups to comp.sys.ibm.pc.programmer.
This thread has strayed away from FORTRAN proper, and that group is more
appropriate.

-- 
Dave Lindsley	#24601#			OPINIONS.  MINE.  (Nobody tells me
dlindsle@blackbird.afit.af.mil		  anything anyway, so I can't possibly 
    ?? lamroN eb yhW ??			  be anybody's mouthpiece...)