10-02-2007 08:24 AM
10-02-2007 09:23 AM
10-02-2007 10:40 AM
10-02-2007 02:47 PM
10-02-2007 09:25 PM
My intuition tells me that LabVIEW is switching between the threads and trying to process multiple images simultaneously on each core. As you are switching between the images, different blocks of memory have to be loaded for each image. Since moving blocks of memory is fairly slow, the memory management is dragging you down.
Setting the number of threads equal to the number of cores gives you the ideal results. You don't have thread starvation (1 thread) or excessive memory cycling (>2 threads).
This is actually a good example where LabVIEW's automatic multithreading can slow you down. Normally, when dealing with very small pieces of data, it isn't an issue that LabVIEW is jumping all over the place and processing whatever is ready next.
Bruce
10-03-2007 01:52 AM
10-03-2007 02:50 AM
10-03-2007 08:48 AM
I was talking about loading the images from RAM memory into the CPU cache and moving them back when each analysis step is complete. If you are alternating between two or more images, each image has to be loaded into the cache for processing each time you use it. This has to take a certain amount of time. If you have several analysis steps for each image, the images would end up getting swapped at the end of each step, resulting in several swaps per image.
Shane, do you have any idea how large your CPU cache is?
Bruce
10-03-2007 03:21 PM
10-03-2007 04:03 PM