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

Or at least allow the single-pc compiler to run more than one job at a time.  I often have 4-6 compiles running at a time because we made a change somewhere and ALL affected Bitfiles need to ne recreated.  Even running multiple parallel slow compilations would be great.

Manzolli
Active Participant

Intaris: good alternative for now. I'm buying an 8 core workstation to replace my 5 years old 4 core machine. Be able to create multiple parallel compile processes would be great.

 

André Manzolli

Mechanical Engineer
Certified LabVIEW Developer - CLD
LabVIEW Champion
Curitiba - PR - Brazil
brooksprumo
NI Employee (retired)

Intaris,

 

The FPGA Compile Worker can be configured to support multiple concurrent compiles.  Here's a screenshot of the FPGA Compile Worker's configuration dialog:

 

 

configure compile worker.PNG

 

 

While each individual job will only use one core, multiple simultaneous jobs can be run.

Intaris
Proven Zealot

Yeah, it can be configured but will still run only one job at a time.  I even downloadsd the compile farm demo but got no joy at all.  Still only one process at a time.

 

My experience at least.

 

Shane.

brooksprumo
NI Employee (retired)

Shane,

 

From my own experience with LabVIEW FPGA over the past few years, I've been successfully able to compile multiple jobs simultaneously (each with their own process, too).  I'm guessing there is likely a configuration or setting difference.  Also, remember to restart the compile worker in order for new settings to take effect.

Lorn
Member

Here's shortcuts for speeding up single FPGA compiles on both Windows 7 and XP for i7 and i5 systems with Turbo Boost. This only applies to a workstation, not a compile farm.  In my case I was able to reduce the compile time 40-50%. It will at least shave several minutes off the compile.

Make sure Turbo Boost is enabled in the BIOS if the option is there.

Windows 7:

Find the Compile Worker shortcut in the start menu and copy it to the desktop.
Modify the compile worker target command to add CMD and START commands (spaces and quotes are important):

C:\Windows\System32\cmd.exe /C START " " /HIGH /AFFINITY 0X01   "C:\Program Files (x86)\National Instruments\FPGA\CompileWorker\CompileWorker.exe"

Windows XP:

Download PsExec from the Microsoft website. It will be part of a suite of commands. I used version 1.98. Unzip the directory, then copy PsExec to C:\Windows\System32.

As above, find the Compile Worker shortcut in the start menu and copy it to the desktop.
Modify the compile worker target to add the PsExec command:

C:\WINDOWS\System32\PsExec -high -a 0 -d  "C:\Program Files\National Instruments\FPGA\CompileWorker\CompileWorker.exe"

If your original Compile Worker command is different, use that. Make sure it is enclosed in quotes.

To use: double click on the modified shortcut to start the Compile Worker. It will start and remain dormant in the background. Open a project and perform an FPGA build. The compile will be queued to the Compile Worker as normal. CPU usage can be monitored in Task Manager. As the compile progresses, the first core usage should eventually peg at 100%. The synthesis phase should be noticeably faster.

For Windows 7, Intel has a Turbo Boost monitor tool.

Why it works: The compiler seems to benefit from higher CPU clock speeds rather than more cores. The scheduler tends to move the process among the different CPU cores, and so the CPU isn't loaded down enough for Turbo Boost to stay on. The above commands force the compile to stay on one core, encouraging Turbo Boost to stay on for the duration of the compile.

bwv1043
Member

Lorn's method works.  My compile time was reduced from 85 minutes to 45.

Intaris
Proven Zealot

@Lorn:  Oh, OK.  I just cut my compile time from nearly 50 minutes down to 23 minutes.  This could turn out to be a huge timesaver.

Manzolli
Active Participant

Great tip for time reduction for those which have i5s and i7s. But still takes too long and all others are stucked in the same place. As this idea become older, the pressure increases because laptops, desktops tablets, and mobiles are increasing performance mostly by adding cores to the CPU.

André Manzolli

Mechanical Engineer
Certified LabVIEW Developer - CLD
LabVIEW Champion
Curitiba - PR - Brazil
ToeCutter
Active Participant

I agree Manzoli- however I suspect there's very little NI can do to overcome the limitations of tools provided by a third party. I also suspect it's the nature of the task that it does not yield well to parallel processing.