It is difficult to runtime optimize away the difference between a CPU and GPU

Article: Introduction to OpenCL
By: Mark Roulo (nothanks.delete@this.xxx.com), December 12, 2010 1:20 pm
Room: Moderated Discussions
hobold (hobold@vectorizer.org) on 12/11/10 wrote:
---------------------------
>What OpenCL enables is parameterized algorithms (like FFTW or ATLAS) crossing the
>borders between GPUs of different making, CPUs, exotic processors like Cell, and
>possibly a few more upcoming architectures. The various machines will not be equalized
>by OpenCL, but we gain a level of abstraction that lets us treat them as essentially
>the same. For an appropriate definition of "essential" ... :-)

I guess that is my concern/question.

Things like FFTW and ATLAS assume (I think?) basically an "essentially the same" underlying CPU that is different only in quantitative ways. Things like effective cache size (effective to take into account N-wayness), number of cache levels, and load latency.

The upshot is that one writes pretty much the same algorithm, but needs to tweak it with different constant values (block size, prefetch distance, etc.) to get optimal performance on any given platform.

I don't see how OpenCL allows/enables this.

The differences between CPUs and GPUs (today) are so large that you really want separate algorithms.

I *do* see how OpenCL would allow one to tweak constants to get best behavior when moving between ATI and nVidia (maybe), but even here you have the nasty problem that ATI wants vector code and nVidia doesn't :-(

I think you still wind up with multiple distinct codebases:

*) CPU (x86, PPC, ARM)
*) nVidia GPU
*) ATI GPU
*) Cell (well, not any more!)

You can parameterize a given codebase (like ATLAS and FFTW do). Any *maybe* you can merge the ATI and nVidia GPU codebases and parameterize those.

But you'll still wind up with multiple codebases.

With luck, Larrabee (if it ever ships for real) will fall into one of the codebases above. If not, you'll have one more distinct codebase to manage.

Do you see things the same? Or are you more optimistic than I am?
< 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 green?