tianshilei1992 added a comment.

In D139287#3971062 <https://reviews.llvm.org/D139287#3971062>, @jhuber6 wrote:

> In D139287#3971024 <https://reviews.llvm.org/D139287#3971024>, 
> @tianshilei1992 wrote:
>
>> In D139287#3970996 <https://reviews.llvm.org/D139287#3970996>, @jhuber6 
>> wrote:
>>
>>> Why do we have the JIT in the nextgen plugins? I figured that JIT would be 
>>> handled by `libomptarget` proper rather than the plugins. I guess this is 
>>> needed for per-kernel specialization? My idea of the rough pseudocode would 
>>> be like this and we wouldn't need a complex class heirarchy. Also I don't 
>>> know if we can skip `ptxas` by giving CUDA the ptx directly, we probably 
>>> will need to invoke `lld` on the command line however right.
>>>
>>>   for each image:
>>>     if image is bitcode
>>>       image = compile(image)
>>>    register(image)
>>
>> We could handle them in `libomptarget`, but that's gonna require we add 
>> another two interface functions: `is_valid_bitcode_image`, and 
>> `compile_bitcode_image`. It is doable. Handling them in plugin as a separate 
>> module can just reuse the two existing interfaces.
>
> Would we need to consult the plugin? We can just check the `magic` directly, 
> if it's bitcode we just compile it for its triple. If this was wrong then 
> when the plugin gets the compiled image it will error.

I prefer error out at earlier stage, especially if we have a bitcode image, and 
both Nvidia and AMD support JIT, then both NVIDIA and AMD will report a valid 
binary, thus continue compiling the image, initializing the plugin, etc., which 
could give us the wrong results.

>>> Also I don't know if we can skip `ptxas` by giving CUDA the ptx directly, 
>>> we probably will need to invoke `lld` on the command line however right.
>>>
>>>   for each image:
>>>     if image is bitcode
>>>       image = compile(image)
>>>    register(image)
>>
>> We can give CUDA PTX directly, since the CUDA JIT is to just call `ptxas` 
>> instead of `ptxas -c`, which requires `nvlink` afterwards.
>
> That makes it easier for us, so the only command line tool we need to call is 
> `lld` for AMDGPU.




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D139287/new/

https://reviews.llvm.org/D139287

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to