LabVIEW Idea Exchange

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

Multi-Core LabVIEW Compiles

Status: Completed

Available in LabVIEW NXG, where the compilation of VIs proceeds in parallel.

The LabVIEW compiler currently appears to use one core of a multi-core processor.  It would be nice if it fully utilized multiple cores to speed building of large projects.

17 Comments
tst
Knight of NI Knight of NI
Knight of NI

My understanding (based on one of AQ's posts, if memory serves) is that this is a mostly linear process which cannot be parallelized very efficiently. Are you suggesting that it can be made faster with a reasonable amount of R&D effort?


___________________
Try to take over the world!
JackDunaway
Trusted Enthusiast

I have a narrow vantage point here, but I'll throw in an opinion:

 

Right now, a Mass Compile for me takes about 10 minutes. Over half that time (~6 min) is WASTED compiling the FPGA VI's, when it's only going to spit out that it was unable to successfully compile those VI's.

 

SOOOOO.... I would give a BIIIG Kudos to whoever picks that low hanging fruit prior to tweaking out a couple percent gain by parallelizing what can be parallelized. If mass compiles could be reduced to 4 minutes rather than 10 just by properly skipping the FPGA VI's, I would be happy.

 

Assuming that problem is fixed and I'm running 4 minute Mass Compiles, I don't care if it's 4 minutes or 1 minute with parallelization.... I Mass Compile once or twice a week, so my net gain is 3-6 minutes per week (read, not worth R&D's investment for my gain).

Neil.Pate
Active Participant

tst has a good memory

 

I had given up on this idea, but will happily pimp it again.

altenbach
Knight of NI

nrp, "compile" != "build".

 

I don't know how well compiling can be parallelized.

 

If it can be, I am all for it. 😄

Neil.Pate
Active Participant

altenbach,

 

right you are, technically...

 

But if you re-read the parent post the words compile and build are used seemingly interchangeably. I interpreted this as build, not compile.

SynchronizationOverhead
NI Employee (retired)

It is true that MassCompile and AppBuilder are each larger processes that involve more than just compile (including load, save, and various AppBuilder stages like DisconnectTypeDefs), and there may be independent optimization opportunities there through parallelization, smarter analysis, or other means. But faster "multi-core LabVIEW compiles" would indeed "speed building of large projects", since compile is a major part of building apps.

 

In general, you could parallelize a compiler in a few ways. (1) Data Parallelism: Break up the call-tree and compile different branches in separate threads; if there are no dependencies between two VIs, they could be compiled in parallel. (2) Pipeline Parallelism: Push multiple dependent VIs through different stages of the compile process at the same time; even if there is a dependency between two VIs, you may still be able to do some compile work on the caller before you finish compiling the callee. (3) Task Parallelism: If parts of the compiler process are truly independent tasks, they could be run in separate threads; even while compiling a single VI, there may be some work that can be done in parallel with the critical path.

AristosQueue (NI)
NI Employee (retired)

We made a pass through all the Ideas for ones that were addressed in the new platform, but we missed some.

 

This is addressed in LabVIEW NXG. The compilation of VIs there does proceed in parallel.

Darren
Proven Zealot
Status changed to: Completed

Available in LabVIEW NXG, where the compilation of VIs proceeds in parallel.

d.w.b
Member

Completed or Declined? It was Declined in like idea https://forums.ni.com/t5/LabVIEW-Idea-Exchange/application-builder/idc-p/3685173#M37402 by Darren per AristosQueue who said "While it is true that the build process gets some acceleration from making the compile process parallel, most of the build process is very serial, as I said before, and our review for NXG didn't change that..."

AristosQueue (NI)
NI Employee (retired)

This idea is completed. The other one is declined.

This one is the very specific "make the compiles parallel". The other one is a broader "make app builder parallel". Compile is a single step within building an app, and there are many steps. So app building benefits from this change, but we are not changing the parallelism of app building overall. Make sense?