OpenCL - why are there any pointers at all?

Article: Introduction to OpenCL
By: Rob Thorpe (rthorpe.delete@this.robertthorpeconsulting.com), December 17, 2010 11:19 am
Room: Moderated Discussions
Richard Cownie (tich@pobox.com) on 12/17/10 wrote:
---------------------------
>Rob Thorpe (rthorpe@robertthorpeconsulting.com) on 12/17/10 wrote:
>---------------------------
>
>>What you were suggesting is that a compiler could provide strength reduction across
>>functions. It could replace the passing of a pointer to the start of an array and
>>an index with the passing of just one pointer. I'm not aware of any compiler that can do that.
>
>No, I wasn't intending to suggest that. Interprocedural
>optimization rarely happens ... I was only thinking
>about optimization within a procedure. And - having been
>a compiler writer myself, briefly, and having looked at
>a certain amount of assembler code generated by various
>compilers - I'd be much more skeptical than you about
>whether compilers succeed in doing the strength-reduction
>consistently.

I see. I'm sure that strength reduction and common subexpression elimination may miss some cases. But, will the programmer notice all cases?

What case would a compiler be likely to miss?

>>>Except actually, they aren't. If you pass in arrays
>>>A, B, and C, then you can't assume that they're
>>>non-overlapping, because you might call it as Foo(a, a, b)
>>>or even Foo(a, a, a). You can only make the not-so-useful
>>>assumption that different indexes refer to distinct
>>>elements. Or to put it another way, that two array
>>>parameters are either identical or disjoint.
>>
>>That's what I meant by saying "bounded" and "immiscible". In languages with arrays
>>the programmer must make sure that two array variables aren't the same array. But,
>>once that has been dealt with there is no possibility that the arrays overlap.
>
>It depends on the language specification whether it's the
>programmer's job to ensure he doesn't pass the same array
>twice, or the compiler's job to handle that case correctly.
>I don't know which particular language you're talking about.
>
>But either way, *someone* has a problem, even without
>pointer variables. And the possible solutions (copying
>the arrays ? making pessimistic assumptions which inhibit
>optimization ?) have a performance impact.

Yes. But, it's still a simpler task than dealing with overlaps as in C.

>>As I understand it OpenCL isn't for the matrix & vector sort of things, not for
>>big programs full of complex data structures.
>
>Up to a point, that's true. But a lot of algorithms
>involve sorting and searching and queueing, and can
>benefit from using appropriate complex data structures
>for those.

Yes, and I'm sure those will be the first folks to implement the type of dynamic memory allocator you mentioned earlier.
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
OpenCL article onlineDavid Kanter2010/12/09 02:44 AM
  OpenCL article onlineXN2010/12/09 06:33 AM
    OpenCL article onlineDavid Kanter2010/12/09 01:54 PM
  OpenCL article onlineanon2010/12/09 02:33 PM
    OpenCL article onlineDavid Kanter2010/12/09 02:38 PM
      OpenCL article onlineIan Ameline2010/12/09 03:47 PM
      OpenCL article onlineAnon2010/12/09 08:27 PM
        OpenCL article onlineDavid Kanter2010/12/09 10:58 PM
  Performance portabilityBryan Catanzaro2010/12/10 12:43 PM
    Performance portabilityltcommander.data2010/12/10 07:11 PM
      It is difficult to runtime optimize away the difference between a CPU and GPUMark Roulo2010/12/10 07:50 PM
        It is difficult to runtime optimize away the difference between a CPU and GPUhobold2010/12/11 03:35 AM
          It is difficult to runtime optimize away the difference between a CPU and GPUMark Roulo2010/12/12 01:20 PM
            It is difficult to runtime optimize away the difference between a CPU and GPUhobold2010/12/12 03:31 PM
              It is difficult to runtime optimize away the difference between a CPU and GPUanon2010/12/12 04:24 PM
                It is difficult to runtime optimize away the difference between a CPU and GPUhobold2010/12/13 03:44 AM
        Specially when the language provides almost no hardware abstraction (NT)EduardoS2010/12/11 10:53 AM
    Performance portabilityWainwright2010/12/11 03:44 PM
      Performance portabilityEduardoS2010/12/11 03:57 PM
        Performance portabilityWainwright2010/12/11 04:02 PM
          Performance portabilityEduardoS2010/12/11 08:20 PM
            Performance portabilityWainwright2010/12/12 02:22 AM
      Performance portabilityDavid Kanter2010/12/11 05:53 PM
        Performance portabilityEduardoS2010/12/11 08:23 PM
          Performance portabilityDavid Kanter2010/12/11 09:06 PM
            Performance portabilityWainwright2010/12/12 02:26 AM
            Performance portabilityEduardoS2010/12/12 09:04 AM
  OpenCL article onlineAlan Commike2010/12/14 01:01 PM
  OpenCL - why are there any pointers at all?Rob Thorpe2010/12/16 03:45 AM
    OpenCL - why are there any pointers at all?EduardoS2010/12/16 01:51 PM
      OpenCL - why are there any pointers at all?Rob Thorpe2010/12/17 03:19 AM
        OpenCL - why are there any pointers at all?Richard Cownie2010/12/17 07:02 AM
          OpenCL - why are there any pointers at all?Rob Thorpe2010/12/17 08:29 AM
            OpenCL - why are there any pointers at all?Richard Cownie2010/12/17 09:13 AM
              OpenCL - why are there any pointers at all?Rob Thorpe2010/12/17 10:03 AM
                OpenCL - why are there any pointers at all?Richard Cownie2010/12/17 10:53 AM
                  OpenCL - why are there any pointers at all?Rob Thorpe2010/12/17 11:19 AM
                    OpenCL - why are there any pointers at all?Richard Cownie2010/12/17 11:51 AM
                OpenCL - why are there any pointers at all?hobold2010/12/17 11:06 AM
          OpenCL - why are there any pointers at all?EduardoS2010/12/18 07:58 AM
            OpenCL - why are there any pointers at all?anon2010/12/18 10:27 AM
            OpenCL - why are there any pointers at all?BorisG2010/12/18 10:33 AM
              OpenCL - why are there any pointers at all?Richard Cownie2010/12/18 02:39 PM
  OpenCL article onlineEmil Briggs2010/12/19 06:40 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell avocado?