[llvm-dev] [llc] Producing ptx assembly for different target architectures - possible bug?
Lorenz Braun via llvm-dev
llvm-dev at lists.llvm.org
Tue Oct 23 00:58:37 PDT 2018
On 23.10.18 01:42, Artem Belevich wrote:
>
>
> On Mon, Oct 22, 2018 at 5:45 AM Lorenz Braun via llvm-dev
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
> Hi,
>
> i just found out that i can use llc to also produce ptx assembly for
> GPUs. I noticed that the produced ptx assembly seems to be
> targeted at
> the gpu architecture sm_20 by default.
>
>
> This is currently the default CPU type for NVPTX back-end.
>
>
> Is there a way to explicitly demand different or additional target
> architectures like sm_30 for example?
>
>
> It works the same way as for the other back-ends. You specify the CPU
> variant with -mcpu=. E.g. for sm_30 you should use -mcpu=sm_30
-mcpu=sm_30 was just what i was looking for. Thank you very much!
>
>
> When i compile a cuda kernel with gpu arch. sm_30 using clang++ the
> .target directive in the ptx assembly will be set to sm_30.
> However when
> i save the bitcode of the same compilation and hand it to llc the
> .target directive is sm_20. There is an attribute in the bitcode that
> say "target-cpu"="sm_30". The information that sm_30 is required is
> still there.
>
>
> It's a *function* attribute which, generally speaking, can't be used
> as the default for the whole module. It also does not do much in NVPTX
> back-end. Eventually it will be used to enforce that -mcpu=XXX is the
> same or higher than the all target-cpu attributes in a module. This is
> one of the areas where NVPTX can't implement what the attribute was
> intended to do -- target different CPU variants within the same
> module. It's doable on x86 where the same ISA can represent
> instructions for different CPU variants, but can't be done in PTX
> which requires everything in the module to be for the same GPU.
Thanks for the info. I understand, when having multiple functions with
different target-cpus this can only done in multiple modules. But i
think use cases for this are rather rare.
Best regards
Lorenz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181023/8f83564b/attachment.html>
More information about the llvm-dev
mailing list