LLVM vs. no-LLVM

Hi,

I noticed that PGI 19.4 has a LLVM version and a no-LLVM version.
As I mentioned in another post, I can only get the no-LLVM version to work with MPI.

My question here is:

What is the practical difference between the LLVM and no-LLVM versions?
Is there a performance advantage to using one or the other?

Thanks

  • Ron

Hi Ron,

What is the practical difference between the LLVM and no-LLVM versions?

The LLVM based compilers will use a LLVM back-end for code generation while the non-LLVM compilers is the older PGI proprietary back-end. We’ve been shipping LLVM based compilers for a number of years now, but in 19.1 switched the default to be LLVM on x86. On Power, only the LLVM compilers are available.

From a general use perspective, most users wont notice a difference between using the two. They both use the same front-end so will behave the same. The biggest difference will the the OpenMP runtime, since we currently use the KMPC runtime for LLVM where the default is to use all the cores of a host, while our propriety OpenMP runtime will use only 1 core by default. Also, OpenMP 4.5 and the new OpenMP binding environment variables are only available with the LLVM compilers.

Is there a performance advantage to using one or the other?

In general, no, but in some cases there could be a difference in performance.

-Mat