PATCH: fix clang to emit correct addrspacecast for CUDA
Justin Holewinski
jholewinski at nvidia.com
Mon Mar 24 11:46:06 PDT 2014
I don't have anything against making this a target-independent IR-level,
as long as no-one complains about it being a core pass. Perhaps the pass
could only execute if a target explicitly enables a flag. Something
like "preferNonGenericPointers". The default could be 'false', and the
pass would only modify the IR if the target sets it to 'true'. Of
course, this also assumes address space 0 is generic. This is currently
true for the in-tree targets and CUDA/OpenCL support in Clang, but I
don't believe its a set rule anywhere.
On 03/24/2014 02:28 PM, Jingyue Wu wrote:
> I agree with your concern. However, both CUDA and OpenCL (two most
> popular users of addrspacecast I believe) support generic address
> space, and could benefit from this optimization Would we end up with
> duplicated code (at least one for CUDA one for opencl) if we put it in
> the back-end?
>
> Jingyue
>
>
> On Mon, Mar 24, 2014 at 11:22 AM, Justin Holewinski
> <jholewinski at nvidia.com <mailto:jholewinski at nvidia.com>> wrote:
>
> The hard part would be making this optimization general enough to
> be target-independent. Optimizing to non-zero address spaces may
> not make sense for all targets (or even all future versions of
> PTX). I agree that there should be an IR-level optimization for
> this, but perhaps its too target-specific and should actually live
> in the back-end.
>
>
> On 03/24/2014 01:05 PM, Jingyue Wu wrote:
>> Right. We are aware of this issue, and think it should be
>> addressed in the IR optimizer (similar to InstCombineLoadCast and
>> InstCombineStoreToCast) instead of clang. Do you think this is an
>> appropriate approach? Is this optimization general enough to stay
>> in the IR optimizer or target-dependent?
>>
>> Jingyue
>>
>>
>> On Mon, Mar 24, 2014 at 4:54 AM, Justin Holewinski
>> <justin.holewinski at gmail.com
>> <mailto:justin.holewinski at gmail.com>> wrote:
>>
>> Hi Jingyue,
>>
>> I committed the addrspacecast isel patterns to NVPTX. Also,
>> I wanted to point out that your changes in the last test case
>> in this patch (address-spaces.cu <http://address-spaces.cu>)
>> represent changes that may lead to performance degradation.
>> Specific address spaces should be used whenever possible for
>> loads/stores. Casting everything to a generic address is
>> still correct, but may lead to additional indirections for
>> the hardware.
>>
>>
>> On Fri, Mar 21, 2014 at 2:25 PM, Justin Holewinski
>> <jholewinski at nvidia.com <mailto:jholewinski at nvidia.com>> wrote:
>>
>> addrspacecast support in NVPTX is on my todo list. I'll
>> try to put something together in the next few days.
>>
>>
>> On 3/21/14, 2:20 PM, Jingyue Wu wrote:
>>> Hi,
>>>
>>> Static local variables in CUDA can be declared with
>>> address space qualifiers, such as __shared__. Therefore,
>>> the codegen needs to potentially addrspacecast a static
>>> local variable to the type expected by its declaration.
>>> Peter did something similar for global variables in
>>> r157167.
>>>
>>> All clang tests passed.
>>>
>>> Justin: The NVPTX backend support for addrspacecast
>>> seems not complete. We can send you follow-up patches
>>> once this one gets in.
>>>
>>> Jingyue
>>
>>
>> --
>> Thanks,
>>
>> Justin Holewinski
>>
>> ------------------------------------------------------------------------
>> This email message is for the sole use of the intended
>> recipient(s) and may contain confidential information.
>> Any unauthorized review, use, disclosure or distribution
>> is prohibited. If you are not the intended recipient,
>> please contact the sender by reply email and destroy all
>> copies of the original message.
>> ------------------------------------------------------------------------
>>
>>
>>
>>
>> --
>>
>> Thanks,
>>
>> Justin Holewinski
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140324/b28d4bab/attachment.html>
More information about the cfe-commits
mailing list