[cfe-dev] [llvm-dev] Clang driver for OpenMP target offloading

Jonas Hahnfeld via cfe-dev cfe-dev at lists.llvm.org
Sun Jan 7 10:13:36 PST 2018


Hi Simone,

I'm not aware of a timeline, it's ready when all necessary patches are 
merged. One large missing piece is the device runtime.

Jonas

Am 2018-01-04 16:48, schrieb Simone Atzeni:
> Hi Jonas,
> 
> thanks for the answer.
> For now I can use the "--save-temps" flag to keep my investigation.
> 
> Do you know what's the timeline for integrating offloading for NVidia
> GPUs upstream?
> 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.
> 
> Thanks.
> Simone
> 
> On Wed, Dec 27, 2017 at 1:10 AM, Jonas Hahnfeld <hahnjo at hahnjo.de>
> wrote:
> 
>> Hi Simone,
>> 
>> 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.
>> 
>> Am 2017-12-26 23:37, schrieb Simone Atzeni via llvm-dev:
>> 
>>> Hi,
>>> 
>>> I am having some trouble to understand how the clang driver works
>>> for
>>> OpenMP offloading.
>>> 
>>> For example, if I run the following command (with the -v flag):
>>> 
>>> clang -v -g -fopenmp offloading_success.c -o offloading_success
>>> 
>>> I can see the invocations that clang does and if I run those
>>> command
>>> one by one I can successfully compile my program.
>> 
>> 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.
>> 
>>> Now, if I do the same but with the offloading option, as in the
>>> following command:
>>> 
>>> clang -v -g -fopenmp -fopenmp-targets=nvptx64-nvidia-cuda
>>> offloading_success.c -o offloading_success
>>> 
>>> the command works, compiles correctly, and when I run the program,
>>> it
>>> successfully run on the device.
>> 
>> (which would not be the case for upstream trunk yet...)
>> 
>>> However, if I show the invocations with "-v" and try to run the
>>> commands one by one it does not work and in particular I get an
>>> error
>>> with the last command which is the linking part with "ld".
>>> The error i get is the following:
>>> 
>>> /usr/bin/ld: cannot open linker script file
>>> /tmp/offloading_success-2b4739.lk [1] [1]: No such file or
>>> directory
>>> 
>>> Where is this ".lk" file generated? Is there a missing commands in
>>> the
>>> invocations?
>> 
>> 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.)
>> 
>> Cheers,
>> Jonas
> 
> 
> 
> Links:
> ------
> [1] http://offloading_success-2b4739.lk



More information about the cfe-dev mailing list