[LLVMdev] Upstream PTX backend that uses target independent code generator if possible
clchiou at gmail.com
Mon Aug 9 17:01:07 PDT 2010
Thanks for asking.
On Mon, Aug 9, 2010 at 3:25 PM, David A. Greene <greened at obbligato.org> wrote:
> Che-Liang Chiou <clchiou at gmail.com> writes:
>> Hi there,
>> I have a working prototype of PTX backend, and I would like to
>> upstream it if possible. This backend is implemented by LLVM's target
>> independent code generator framework; I think this will make it easier
>> to maintain.
> How does this relate, at all, to the backend here:
> If they are unrelated, can you do a comparison of the two? Perhaps
> there are holes in each that can be filled by the other. It would be
> a shame to have two completely different PTX backends.
I surfed their code, and it seems that they didn't use code generator.
That means there design should be similar to CBackend or CPPBackend.
So I guess it can't generate some machine instructions like MAD,
and there are some PTX instruction set features that are hard to exploit
if not using code generator.
But I didn't study their code thoroughly, so I might be wrong about this.
>> I have tested this backend to translate a work-efficient parallel scan
>> kernel ( http://http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html
>> ) into PTX code. The generated PTX code was then executed on real
>> hardware, and the result is correct.
> How much of the LLVM IR does this support? What's missing?
Have to add some intrinsics, calling conventions, and address spaces.
I would say these are relatively small changes.
>> So far I have to hack clang to generate bitcode for this backend, but
>> I will try to patch clang to parse CUDA (or OpenCL) while I am
>> upstreaming this backend.
> I think it's a lot of work to do CUDA support for not much benefit.
> The OpenMP committee is working on accelerator directives and that's
> the better long-term approach, IMHO. Clang/LLVM would be a great
> vehicle to generate/test ideas for such directives.
Thanks for suggestion.
More information about the llvm-dev