comp.lang.ada
 help / color / mirror / Atom feed
From: Dr Adrian Wrigley <amtw@linuxchip.demon.co.uk>
Subject: Re: gnat and heap size
Date: Tue, 25 Sep 2001 23:10:20 GMT
Date: 2001-09-25T23:10:20+00:00	[thread overview]
Message-ID: <3BB10E2C.8C57FFE1@linuxchip.demon.co.uk> (raw)
In-Reply-To: 1001442590.557811@news.drenet.dnd.ca

Claude Marinier wrote:
> We want to use large arrays (well, large for us: 10000 x 10000 complex
> numbers). We are using gnat 3.13p on Solaris 7. We run out of heap (heap
> exhausted) and have not yet found a way to increase it.

I have had a similar problem, and raised it on this NG a few months ago...

I was trying to store the past five years of the US stock markets in a big array.
I wanted to reload the data from disk "instantly", so I could do statistics easily.

The solution I came up with was to use an "mmap" call to map the data.  That way,
I could get an access value to data as big as the OS could give.  This was big
enough for my data (about 0.5GB).  Mapping the data back in was extremely quick.
Unfortunately, it makes the code a bit less portable, but that wasn't too bad.

But there were problems with mapping big records, and taking 'size attributes.
Since Ada works in bits, the sizes can overflow (signed) 32-bit representation.
This makes handling data in excess of 256MB tricky, since locations of
record elements are wrong, as are size attributes (eg a problem in generics).
I solved this by calculating the sizes of each element, multiplying by the
number of elements, adding in each record component's size.  Nasty.
But it was 10-100 times the speed of more obvious solutions.

I suspect you have a 64-bit architecture, and *may* not hit the 'size problems
I had with GNAT.  If you stick to simple arrays, you might be OK. I was using
GNAT 3.12p on a '686 processor.

I don't know what these other guys seem so surprised at.  Doesn't everybody
else have 1280MB of RAM nowadays, too?  ;-)  It's only a few hundred bucks!
--
Adrian Wrigley

(by the way... what do you use such large matrices for?)



  parent reply	other threads:[~2001-09-25 23:10 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-09-25 18:29 gnat and heap size Claude Marinier
2001-09-25 20:46 ` Ted Dennison
2001-09-25 21:15   ` Marin David Condic
2001-09-25 21:49     ` Ted Dennison
2001-09-26 13:04       ` Marin David Condic
2001-09-26 13:39         ` Ted Dennison
2001-09-26 14:18           ` Larry Kilgallen
2001-09-26 14:27             ` Larry Kilgallen
2001-09-26 14:53             ` Marin David Condic
2001-09-26 17:21               ` Larry Kilgallen
2001-09-26 18:12                 ` Marin David Condic
2001-09-26 18:35               ` Marin David Condic
2001-09-27  7:20                 ` Martin Dowie
2001-09-26 21:16               ` Pascal Obry
2001-09-27 13:07                 ` Marin David Condic
2001-09-27 15:25                   ` Holographic memory (Was: gnat and heap size) Jacob Sparre Andersen
2001-09-27 16:26                   ` gnat and heap size Dale Pennington
2001-09-27 16:57                     ` Darren New
2001-09-27 16:58                     ` Marin David Condic
2001-09-27 19:19                     ` tmoran
2001-09-26 14:13         ` Larry Kilgallen
2001-09-27 10:39       ` Ole-Hjalmar Kristensen
2001-09-25 22:40   ` David Starner
2001-09-26  2:12   ` Robert Dewar
2001-09-26 13:36     ` Ted Dennison
2001-09-26  2:13   ` Robert Dewar
2001-09-26 13:29     ` Ted Dennison
2001-09-25 23:10 ` Dr Adrian Wrigley [this message]
2001-09-26  9:09   ` Lutz Donnerhacke
2001-09-26 13:58     ` The decline of programming civilization (was: gnat and heap size) Ted Dennison
2001-09-26 13:44   ` gnat and heap size Claude Marinier
2001-09-26 14:55     ` Ted Dennison
2001-09-26 20:45       ` Erik Johannessen
2001-09-27  6:12         ` Dr Adrian Wrigley
2001-09-27 18:23           ` erij
2001-09-27  9:02         ` Erik Johannessen
2001-09-27 13:27           ` Gerald Kasner
2001-09-27 17:48             ` erij
2001-09-27 14:11         ` Peter F. Gath
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox