LabVIEW FPGA Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
Manzolli

Multi-core Compiling

Status: New

Even though ibberger touched the concept in the idea , I do think that most o people uses LabVIEW under Windows environment. Compiling a FPGA VI happens all in the PC under Windows. I noticed that during this process the compiler uses only one core. Since I'm using a machine with a 4 core processor, the CPU use rarely goes above 25%.

 

My idea is to update the compiler allowing it to be multicore. The user should have the option to limit the maximum number of cores available to the compiler. This is necessary because the user may want to continue working, while the compiling process is being done in background.

André Manzolli

Mechanical Engineer
Certified LabVIEW Developer - CLD
LabVIEW Champion
Curitiba - PR - Brazil
42 Comments
JCC_(SK)
Active Participant

My solution is: Two Virtual Machines. One for FPGA compilation and second for developing. FPGA VM has only one CPU core and 4 GB or RAM (winXP) and Dev VM has more CPUs and less RAM. And in Host operation system (hosting my VMs) (Ubuntu 64 bits 12 GB RAM) I setup FPGA VM to run only on one core and Dev VM on remaining cores. This will stop migrate FPGA VM from one core to another.

Intaris
Proven Zealot

Compiling in a VM for me is significantly slower than native (20-30%).  Not an option for me.  I'd much rather to peg one processor than go this route.

crossrulz
Knight of NI

With the release by Xilinx of Vivado, the FPGA compiler (in 2014) is mult-threaded, currently up to 8 threads.  This only won'ts on the Series 7 FPGAs currently (Zynq and Kintex), but I would call that enough to make this idea Completed!


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
Intaris
Proven Zealot

Is the compiler really multithreaded or can you have more than one compilation going at a time.... I know the Compile farm is now included so maybe that's where the 8 threads are coming from?

crossrulz
Knight of NI

No.  I was told specifically from a Xilinx guy (who knew pretty much nothing about how LabVIEW FPGA works) that Vivado can handle 8 cores, with research to increase it to 16.  This has nothing to do with LabVIEW FPGA other than it calls the Vivado.


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
Intaris
Proven Zealot

Well that goes into my "Really cool" bin then.

jbeale1
Member

I am on Windows 7 SP1, i5-4310M CPU. When compiling FPGA code for cRIO-9068 on a freshly installed Labview 2014 SP1 (using Xilinx Vivado 2013.4) I notice that Vivado is using only one of my 4 cores. Is there some Labview setting I need to change, to take advantage of more cores and speed up the process?

Manzolli
Active Participant

The Xilinx guys should start writing their compilers in LabVIEW in order to start using more than one core. Smiley LOL

André Manzolli

Mechanical Engineer
Certified LabVIEW Developer - CLD
LabVIEW Champion
Curitiba - PR - Brazil
crossrulz
Knight of NI

When I last looked at my core usage using the Vivado compiler, it was using 4 of my cores (quad core with hyperthreading, so Windows makes it look like 8 cores).  What jbeale's issue could be is a trick a lot of us did to make the ISE compilers run faster: set the priority to "high" and the core affinity to some core.  So that trick would make the LabVIEW Compile Server stay on a single core (eliminating the core swapping slow downs).  See Lorn's comment for how to do this.  But If that core affinity is still set for the compile server, even with Vivado, it will run on a single core.  My recommendation is to set the compile server to be of high priority.  Do NOT set the core affinity if using the Vivado compiler.


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
jbeale1
Member

I am not an experienced LabView user and I have not done any configuration change to lock the compile server to a single core.  Having just read this post from crossrulz, I checked Start->National Instruments->FPGA Compile Tools->FPGA Compile Worker but as far as I can tell from Windows "Properties" it is simply a link without any command-line options:

 

"C:\Program Files (x86)\National Instruments\FPGA\CompileWorker\CompileWorker.exe"

 

While compiling, the Windows Task Manager shows the "vivado.exe" process pegged at 25% of total CPU, and from the "Performance" graph it is hopping back and forth between two cores. I am glad to hear it's possible to get multi-core performance from Vivado under LabView, I wish I knew how!