LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Runing Labview on four Intel xeon processor

Solved!
Go to solution

@tdcpopiou wrote:

I wonder if the problem come from windows server 2012 R2 licence ? Even if it should be ok.


Unfortunately, you require "server" with more than two CPU sockets. 😞 I still suspect this might be a server configuration issue that no single process can use more than one CPU, for example. Might be worth asking in a windows forum. I have no expertise here.

 

A google search returns for example this document.

0 Kudos
Message 11 of 22
(1,873 Views)

Thank you !


It diden't make it work but it's one problem out.

I'am still loked to one processor...

Do anyone have already run a LabVIEW programme on a four CPU sockets server ?

0 Kudos
Message 12 of 22
(1,860 Views)

Another thing you should try is to disable hyperthreading, either in the BIOS or by only assigning processor affinity for the LabVIEW process to the even (or odd) processor IDs in Task Manager. Also, make sure that the LabVIEW process is allocated across all cores there.

 

Jacob Kornerup, Ph.D. LabVIEW Engineering Manager
0 Kudos
Message 13 of 22
(1,847 Views)

There is a way to do use only one CPU on purpose, windows-priority-and-affinity.

 

Perhaps this was done (by IT?) or set by some freaky unfortunate chain of events? If it's a server, this might be some 'feature' for default applications.

 

Note that parallel loops will still be executed (somewhat) sequential unless everything in them is reentrant. Non-reentrant VIs will make the loops wait for each other, and thereby make LV still use one CPU.

0 Kudos
Message 14 of 22
(1,807 Views)

@altenbach wrote:

@tdcpopiou wrote:

Another isue is the fact that parallele "for loop" are limited to 64 instances in Labview.


You can raise the limit to 256 after you change an entry in the ini.

 

ParallelLoop.MaxNumLoopInstances=256

 

(details)


You can set it to anything, really. Even 50000.

 

The nr of parallel loops has little to do with the nr of cpu's or available physical treads.

 

These parallel loops are assumed to be cpu intensive, but they don't need to be. You can for instance have 1000 processes just waiting for something... In parallel.

 

This is very useful when executing an array of OO objects. Each child does it's thing. In parallel.

Message 15 of 22
(1,805 Views)

Hi,

I tryed to disable hyperthreading in the BIOS !

It turned out that I can now use two physical CPUs so still 36 cores max.

But I have seen another issue, I am using the VI "CPU infos" on my code and I get something strange :

Most of the time I get :

- With hyperthreading enable, Nb Socket CPU = 5, Nb cores per CPU = 18, Nb threads per cores = 2, Total Nb of threads = 180 (case 1.1)

- With hyperthreading disable, Nb Socket CPU = 6, Nb cores per CPU = 18, Nb threads per cores = 1, Total Nb of threads = 108 (case 1.2)

Sometime after a restart of the computer I get :

- With hyperthreading enable, Nb Socket CPU = 1, Nb cores per CPU = 18, Nb threads per cores = 2, Total Nb of threads = 36 (case 2.1)

- With hyperthreading disable, Nb Socket CPU = 2, Nb cores per CPU = 18, Nb threads per cores = 1, Total Nb of threads = 36 (case 2.2)

It looks like Labview have only access to cores specified in case 2.1 and 2.2 and in cases 1.1 and 1.2 It's like having the real configuration of the computer plus what Labview have access to.

Again it's looking like the issue is coming from Windows.

 

 

0 Kudos
Message 16 of 22
(1,806 Views)

maybe (long shot) the same as

Windows 10 limits max number (32) of threads with MMCSS priority 

 

It's probably not the same issue because windows server (even the 2012 R2) si meant to be used in multiple sockets servers.

But it can be a Windows thing that restrict the full capacity.

0 Kudos
Message 18 of 22
(1,791 Views)

@Kevin_Price wrote:

I'll bet you see 3 cores getting used because the compiler recognizes the benefit of splitting up parallel work to separate cores.

 

 

-Kevin P


I'll bet you will see all cores running at 3/x*100 % (x=number of cores)

Currently my computer is running more than 250 processes at the "same time". But i have only 4 cores. The operating system kernel therefore select 4 processes to run for some allotted time before it lets the next 4 processes use some processor time, and so on. That means that the 3 while loops will  be spread over all available processors. It is possible to lock a program to selected cores. If you let LabVIEW run the 3 while loops on 6 cores they will use 50% each, and the rest of the processors will have low load.

0 Kudos
Message 19 of 22
(1,779 Views)
Solution
Accepted by topic author tdcpopiou

I think I get the answer, Windows is creating groups of logical CPUs and the size of the group cannot exceed 64 logical cores, in my case 72 cores with hyperthreading disabled are split into two groups of 36 cores. You can see for reference this link.

 

So NI may have to look at this problem...

0 Kudos
Message 20 of 22
(1,774 Views)