Regarding Compiler support

Hello,
I want to ask some basic questions;

What is meant by compiler support? Like if we say compiler support is provided for some specific programming model or parallel programming or gpu programming what is meant by that?
For example multiple compilers has support for openmp parallel programming model what is meant by that?
What are the advantages of giving compiler support for openmp instead of using openmp externally /standalone?

I would be very grateful if i get answers to these.

Thank you

Regards
Hameeza Ahmed

From: llvm-dev [mailto:llvm-dev-bounces@lists.llvm.org] On Behalf Of hameeza ahmed via llvm-dev
Sent: Saturday, December 24, 2016 2:17 PM
To: llvm-dev@lists.llvm.org
Subject: [llvm-dev] Regarding Compiler support

Hello,
I want to ask some basic questions;

What is meant by compiler support? Like if we say compiler support is
provided for some specific programming model or parallel programming or
gpu programming what is meant by that?

Typically it means if you have source code using those things, the compiler
can compile that into something sensible.

For example multiple compilers has support for openmp parallel programming
model what is meant by that?

For Clang it means the compiler understands OpenMP pragmas and will transform
the related loops or whatever according to what the pragmas say to do.

What are the advantages of giving compiler support for openmp instead of
using openmp externally /standalone?

"using openmp externally" sounds like you would run a separate preprocessor
that understands the pragmas, and generates a modified source that does
whatever the pragmas say, to the extent that is possible. Then you compile
the modified source using a compiler that doesn't necessarily understand
anything about OpenMP.

The advantage of a compiler that understands OpenMP directly is that you
save a step in your build process, and probably get better debugging info
making your program easier to debug.
--paulr

In addition to what Paul said:

The advantage of a compiler that understands OpenMP directly is that you
save a step in your build process, and probably get better debugging info
making your program easier to debug.

…and get better performing code as well – some pragmas, like #omp simd, can’t be expressed in plain C++ (unless one relies on some other pragmas… ;-)), so won’t be expanded properly by a preprocessor.

Yours,
Andrey