IDL memory limitation? [message #45488] |
Thu, 15 September 2005 01:08  |
IDLmastertobe
Messages: 54 Registered: June 2004
|
Member |
|
|
Hi, I am trying to visualize some 3D data using IDL and I found when my
data size grow big, the program runs out of memory and won't work.
Indeed, the data size is not too big yet, it is about 50MB max while some
of my other data could be on the level of few or more GigaBytes in the
future. Does anyone have any idea if IDL has any certain limitations on
memory allocation? Thank you.
|
|
|
Re: IDL memory limitation? [message #45609 is a reply to message #45488] |
Mon, 19 September 2005 10:46  |
Karl Schultz
Messages: 341 Registered: October 1999
|
Senior Member |
|
|
On Fri, 16 Sep 2005 17:18:09 -0400, IDLmastertobe wrote:
> Thank you everyone, here is my test result from memtest:
>
> Memory block # 1: 569 Mb (total: 569 Mb)
> Memory block # 2: 382 Mb (total: 951 Mb)
> Memory block # 3: 196 Mb (total: 1147 Mb)
> Memory block # 4: 183 Mb (total: 1330 Mb)
> Memory block # 5: 128 Mb (total: 1458 Mb)
> Memory block # 6: 88 Mb (total: 1546 Mb)
> Memory block # 7: 63 Mb (total: 1609 Mb)
> Memory block # 8: 59 Mb (total: 1668 Mb)
> Memory block # 9: 40 Mb (total: 1708 Mb)
> Memory block #10: 37 Mb (total: 1745 Mb)
>
> before I was visualing 3-D data on the size of say
> 50x50x10, now im visualizing data on the size of 250x250x1 and it is
> giving me error saying it can't allocate memory to create array. I check
Posting some more details or part of the actual code would really help
here.
You say that you have 3D data that is 50x50x10 and then you say 250x250x1,
which isn't clear to me. Did you mean 250x250x10? What is the type of
the data in the array? Byte? Float?
> the memory by using "help, /memory" and found the heap memory is used
> up. I am taking in 3D data and visualizing it by using IDLgrContainer.
> I created IDLgrModel and IDLgrAxis etc and put them together to
> visualize them. I can rotate it or flip it any way I want. It is a
> real time visualization. Does anyone know how I can overcome this
> memory problem? I currently have 1GB of RAM installed and 2GB of Virtual
> Memory allocated.
> Thanks.
IDLgrContainer is a container object and isn't capable of visualizing
anything on its own. There needs to be some sort of graphic
primitive like IDLgrSurface, IDLgrContour, IDLgrVolume, etc. Which one
are you using?
You mentioned the IDLgrAxis, but that's not the object that is handling
your actual data.
The amount of RAM and Virtual Memory that you have doesn't matter here if
you are asking for a block of contiguous memory that is larger than the
largest available free block. In your case, the largest free block WAS
569MB at the time you ran memtest. The size of the largest free block may
have been different at the time your application needed it. We won't know
until you tell us how you are visualizing your data.
Karl
|
|
|
Re: IDL memory limitation? [message #45627 is a reply to message #45488] |
Sun, 18 September 2005 17:32  |
Mark Hadfield
Messages: 783 Registered: May 1995
|
Senior Member |
|
|
raval.chintan@gmail.com wrote:
> If you can provide some code so that we can test it out over here...
Good advice. Also, trim it down to a problem you *can* handle and see
how much memory is used relative to the size of the data you are
visualising. You might then trying stepping through the objects in your
heap (as listed by the OBJ_VALID and PTR_VALID function) and determine
how much memory each of them uses. You could do this by deleting each
object in turn and seeing how much memory is freed (but remembering that
some objects delete others as part of their cleanup). This may all be
a bit tedious, but once you've established where the memory is being
consumed you may be able to do something about it. Remeber Karl's
advice, some graphics objects use much more memory than the data they're
representing, some don't.
--
Mark Hadfield "Kei puwaha te tai nei, Hoea tahi tatou"
m.hadfield@niwa.co.nz
National Institute for Water and Atmospheric Research (NIWA)
|
|
|
|