LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How to solve Labview 2GB memory limit?

Hardware: WinXP-32bit, 4GB Memory, Intel Q6600.

"/PAE" option in boot.ini.

Windows see 3.23GB.

Labview 8.5

 

If i try to increase a queue size more than ~1.8GB Labview "Not enough memory" error appear.

 vi attached.

Is there any solution to this?

Message Edited by HaD on 03-10-2009 10:09 AM
0 Kudos
Message 1 of 13
(4,289 Views)
You could use a Producer Consumer Architecture and write the data that is in your queue to file in the consumer loop in order to keep your queue from growing too big.  If you need the data later you can read it back from file in chunks and store those chunks back in a queue in order to operate on it.
0 Kudos
Message 2 of 13
(4,270 Views)
I cant write to file. acquisition too fast..
0 Kudos
Message 3 of 13
(4,259 Views)

Are you setting the size of the queue to 1.8m elements? If so, what is the data type of your queue? the memory required to preallocate a queue of doubles would be different than the memory required for a queue of U8.

 

Also, I think LabVIEW can only request up to 2 GB from Windows according to this Knowledge base entry.

 

 

 

Message Edited by Phillip Brooks on 03-10-2009 12:13 PM
Message 4 of 13
(4,257 Views)

This is just a shot in the dark but have you tried an array of queues and limit the queues to one entry in each?

 

Please let me know if you can get more than 1.8 Gig.

 

The best i ever did was 1.3 without using the 3 Gig aware switch.

 

Ben

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
Message 5 of 13
(4,246 Views)
Ben, can you explain your thinking behind the array of queues?  I am guessing that I will learn something from your explanation.
0 Kudos
Message 6 of 13
(4,241 Views)

jmcbee wrote:
Ben, can you explain your thinking behind the array of queues?  I am guessing that I will learn something from your explanation.

You want me to explain?!

 

 

Queues can be transfered "in-place" so the the queue ref may be working like a pointer that can be used to locate a pointer to where the data sits. The OP indicated he had the 3Gig aware switch turned on (I think that what that ref indicates) so the message may be due to not being able to find a contiguous block that large. Arrays have to be contiguous.

 

So I was thinking that the array would only store the refs to A queues. Each Queue would only contain one value. So soemwhere along the line that structure could be implemented using a bunch of small memory blocks instead one big one.

 

I did say it was a shot in the dark.

 

Ben

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
Message 7 of 13
(4,232 Views)

Hey all, take a look at the attached VI ..

im adding to the queue in loop 1024*1024*U8=1Mbyte each loop.

 

this is very simple and anyone can try this to see his limit.

TaskManager show ~2GB virtual memory when the error occur. im guessing its because labview enviroment take some memory...

 

0 Kudos
Message 8 of 13
(4,230 Views)

Its one Queue, each element is 2D Array (1024*1024*U8=1MByte this example)

 

0 Kudos
Message 9 of 13
(4,225 Views)

Ben,

 

Is this what you had in mind?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Message Edited by jmcbee on 03-10-2009 11:08 AM
Message 10 of 13
(4,197 Views)