LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Multicore processing maximum number of cores

Hi,

 

we do some image processing in a parallel loop. Our process is still not fast enough so we are thinking about buying a board with four CPU-sockets with the best available Xeon processor. That would mean 48 "real" cores or 96 thread. So I would like to know if the number of threads that can be used by LV is limited?

 

best regards

lesnah

 

PS

We use LV 2013 SP1

0 Kudos
Message 1 of 8
(4,220 Views)

This article is quite old, but it will give you an idea: http://digital.ni.com/public.nsf/allkb/84eca015aa496b23862565bc006c0f19


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
0 Kudos
Message 2 of 8
(4,188 Views)

Thanks for your answer. Your link deals with the threads used by the OS. Unfortunately it doesn't say anything about parallel programming working on several cores (or at least virtual cores) of the CPU.

 

It would be helpful to know about any experience or limits by LV to evaluate the use of such an expensive "super computer".

0 Kudos
Message 3 of 8
(4,184 Views)

Once a program makes threads, it is up to the OS to put the different threads on different CPU cores.  Ideally, the OS will spread the threads across the many cores, which has been my experience when I have some heavy processing.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
0 Kudos
Message 4 of 8
(4,180 Views)

Win 7 (64bit) supports up to 256 cores (Link MS). So if Windows is able to handle it - LV does as well? It would be interesting whether there's a limit of inefficiency where (almost) linear scaling effects stop working due to increasing administration effort. 

0 Kudos
Message 5 of 8
(4,165 Views)

That depends heavily on the nature of the type of processing and the algorithms used.

 

Lynn

0 Kudos
Message 6 of 8
(4,159 Views)

As seens from the link already quoted, tthe number of allocated threads is dependent on the number of avaialble CPU cores. The parallel FOR loop can be set for up to 256 parallel instances with the following ini setting:

 

ParallelLoop.MaxNumLoopInstances=256 (see here)

 

If programmed correctly, LabVIEW can use all cores you throw at it. Of course if the code forces sequential execution due to poor architecture, extensive critical sections, and artificial data dependencies, the hands of the LabVIEW compier are tied.

 

I have a Dual Xeon with 32 virtual cores (=16 hyperthreaded cores) and I can keep them all busy, gettting a 17x speedup over the single core performance (details). The code is highly optimized for parallel execution.

 

 

If you need to do highly parallel matrix operations, you might also want to look into the MASM toolkit.

0 Kudos
Message 7 of 8
(4,146 Views)

That is very interesting. The table on your site gives a nice overview about the different processors. To sum it up I would say that (if you use an Intel processor) the speed really increases with the number of cores. Hyperthreading doesn't help that much but it leads to a speedup larger than the number of real cores.

 

Of course the performance depends on the algorithm. RIght now we are using an Intel i7-3770k and when running our program the 8 single virtual cores are almost at a 100% usage. So we are looking forward to extrapolating that performance to a larger (but more expensive...) system.

 

Concerning matrix operations we have the problem that our algorithms include a lot of non-linear equations and that's why matrix operations cannot be used. There are some steps containing standard operations like FFT - but to accelerate them we have not been thinking about the MASM toolkit yet. I am going to have a closer look on it. Until now we have been playing with the GPU analysis toolkit (Nvidia CUDA GPU) but it was not that promising especially because of a lot of initializing/allocating trouble.

0 Kudos
Message 8 of 8
(4,123 Views)