[llvm-dev] [LLVM][RFC] Representing the target device information in the LLVM IR
Friedman, Eli via llvm-dev
llvm-dev at lists.llvm.org
Wed Apr 25 15:18:24 PDT 2018
On 4/25/2018 3:05 PM, Lin, Jin via llvm-dev wrote:
>
> RFC: Representing the target device information in the LLVM IR
>
> ===========================================================================
>
> Why this RFC change?
>
> =================
>
> The target device information needs to be passed to the LLVM backend
> when OpenMP backend outlining is enabled. For example, for multiple
> target devices, the target compilation has to generate a single host
> to support all the targets. In order to make sure all the target
> outlined functions have the same interface, the information of all the
> target architectures is needed during host and target compilation. In
> the following example, the firstprivate variable ‘d’ is passed by
> value under x86_64-mic and passed by reference under
> i386-pc-linux-gnu. In order to avoid this inconsistency, the compiler
> needs all the target architecture information so it can find a common
> interface. In this example, it will change the x86_64-mic interface
> for ‘d’ to pass by reference.
>
> Existing code: 64-bit firstprivate variable
>
> void foo() {
>
> double d = 1.0;
>
> #pragma omp target firstprivate(d)
>
> {}
>
> }
>
> $clang –fopenmp-backend -fopenmp-targets=x86_64-mic, i386-pc-linux-gnu …
>
> x86_64-mic
>
> define void @__omp_offloading…(i64 %d) #0 {
>
> entry:
>
> …
>
> }
>
> i386-pc-linux-gnu
>
> define void @__omp_offloading…(double* dereferenceable(8) %d) #0 {
>
> entry:
>
> …
>
> }
>
> There is an inconsistency between host and target part(s) of the program!
>
I don't see how this inconsistency is a problem... at least, not on its
own. The host code doesn't call either of these functions directly; it
calls the OpenMP runtime, which should invoke the offloaded function
correctly. (If it doesn't, that's a bug in the OpenMP lowering, not the
LLVM backend.)
-Eli
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180425/e0b0cf33/attachment.html>
More information about the llvm-dev
mailing list