OpenCL - why are there any pointers at all?

Article: Introduction to OpenCL
By: Richard Cownie (tich.delete@this.pobox.com), December 17, 2010 10:53 am
Room: Moderated Discussions
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.

>>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.

>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.
< 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?