I am using the attached VI to stack cycles of data. Ideally, I would like to stack 200-300 cycles, but anytime I get above 100-125 shift registers/cycles, the VI will not compile. After 20-30 minutes, the error "out of memory exception caught in llvm gencode" appears.
Follow past searches, I have increased the virtual memory as detailed below, which did not solve my problem.
Being unfamiliar with modifying the .ini file, how do I exactly do this? Is it as simple as adding a line "LLVMLargeVIThreshold=12000" ? (or something greater than the standard 7500 value). I have adding this line to the .ini file and still get the compiler error llvm issue.
Any other suggestions or thoughts? I dont want to have to roll back from 2010SP1 in order to be able to run this vi and get around this issue...
I can get it above 200 shift register elements and still get it to compile, but that may be due to system differences.
However, that design does not scale well. Any time you want to change the number of elements you need to modify the program.
Have you considered a queue of datatype Array of Double?
If you look at buffer allocations in your program you get one buffer for each shift register element and one for the 2D array. Each must have contiguous memory due to the way arrays are stored in memory. If the input array array grows in length, then all of the buffers need to be reallocated. This should be a run time problem rather than compile-time, but the compliler may try to do some optimizations, particularly since it knows all the shift register buffers will be the same size.
The Queue stores each array separately and the arrays can be different lengths. To get all the data, use Get Queue Status with return elements? set True. This will return an array of clusters with each cluster containing one of the input arrays.