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,290 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,271 Views)
I cant write to file. acquisition too fast..
0 Kudos
Message 3 of 13
(4,260 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,258 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,247 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,242 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,233 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,231 Views)

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

 

0 Kudos
Message 9 of 13
(4,226 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,198 Views)