<div dir="ltr">Hi Jonas,<div><br></div><div>thanks for the answer.</div><div>For now I can use the "--save-temps" flag to keep my investigation.</div><div><br></div><div>Do you know what's the timeline for integrating offloading for NVidia GPUs upstream?</div><div>I remember seeing a big patch for integrating OpenMP target generation in the clang driver and I thought it was already accepted and committed, but I might be wrong.</div><div><br></div><div>Thanks.</div><div>Simone</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 27, 2017 at 1:10 AM, Jonas Hahnfeld <span dir="ltr"><<a href="mailto:hahnjo@hahnjo.de" target="_blank">hahnjo@hahnjo.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Simone,<br>
<br>
you are more likely to get answers to frontend questions asking on cfe-dev. However, your output shows that you are using clang-ykt which isn't supported upstream so this is not the right place for your questions. Nevertheless, I'll answer some because the same "problem" will arise with (upstream) trunk.<span class=""><br>
<br>
Am 2017-12-26 23:37, schrieb Simone Atzeni via llvm-dev:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I am having some trouble to understand how the clang driver works for<br>
OpenMP offloading.<br>
<br>
For example, if I run the following command (with the -v flag):<br>
<br>
clang -v -g -fopenmp offloading_success.c -o offloading_success<br>
<br>
I can see the invocations that clang does and if I run those command<br>
one by one I can successfully compile my program.<br>
</blockquote>
<br></span>
Just to clarify: This will compile but will fallback to run on the host because the arguments don't specify which device to compile for.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Now, if I do the same but with the offloading option, as in the<br>
following command:<br>
<br>
clang -v -g -fopenmp -fopenmp-targets=nvptx64-nvidi<wbr>a-cuda<br>
offloading_success.c -o offloading_success<br>
<br>
the command works, compiles correctly, and when I run the program, it<br>
successfully run on the device.<br>
</blockquote>
<br></span>
(which would not be the case for upstream trunk yet...)<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
However, if I show the invocations with "-v" and try to run the<br>
commands one by one it does not work and in particular I get an error<br>
with the last command which is the linking part with "ld".<br>
The error i get is the following:<br>
<br>
/usr/bin/ld: cannot open linker script file<br></span>
/tmp/<a href="http://offloading_success-2b4739.lk" rel="noreferrer" target="_blank">offloading_success-2b4739<wbr>.lk</a> [1]: No such file or directory<span class=""><br>
<br>
Where is this ".lk" file generated? Is there a missing commands in the<br>
invocations?<br>
</span></blockquote>
<br>
The linker script is generated by Clang's driver (both in clang-ykt and trunk) and is deleted after its usage which is the default for temporary files. If you want to inspect the intermediate files, I suggest adding --save-temps which will dump a bunch of files to the current directory. (AFAIK this will result in more files than generated by default so that developers have more intermediate steps to look at.)<br>
<br>
Cheers,<br>
Jonas<br>
</blockquote></div><br></div>