ispc on GPUs

Article: AMD's Analyst Update
By: Matt Pharr (matt.delete@this.pharr.org), February 12, 2012 10:02 am
Room: Moderated Discussions
Anon (no@thanks.com) on 2/11/12 wrote:
---------------------------
>For what it's worth, the thing I'll be working on has no such luxuries. It won't
>ever run on Windows, should be able to run on a multi-core x86 without a GPU, and
>isn't likely to get very far with management if some kind of commercial compiler
>tech is required. I'm not really seeing an alternative to OpenCL at the moment.
>ISPC looks really interesting, but has no GPU backends at the moment, and it's not clear if it ever will.

I think think a GPU backend for ispc probably doesn't make sense (and thus is unlikely to happen), for a variety of reasons, most of which boil down to the substantial underlying architectural differences between CPUs and GPUs.

ispc was primarily designed to map well to modern (and future) CPU hardware as it exists today; this led to design features like the ability to express both scalar and vector computation, cross-lane communication mechanisms, an execution model that has stronger guarantees of convergence across the running program instances than is possible on GPUs, the ability to use data in memory from the application without copying or reformatting, etc.

Conversely, ispc doesn't have the notion of GPU-y things like local memory, doesn't have barriers (since they're not needed due to the execution convergence guarantees, etc.) Without those mechanisms in language, it's hard (impossible?) to write programs that run with high performance on GPUs.

I don't think it makes sense to add those features to ispc, since they negatively impact the goal of mapping well to CPU hardware and delivering very high performance on CPUs.

Put another way (alert: my personal opinion only, not Intel's): I think that OpenCL on the CPU has a number of shortcomings that stem from these issues: it's full of limitations that are unnecessary on the CPU (e.g. a very restricted pointer model), it requires a driver and the resulting overhead and data copying, it has language features like barriers and shared memory that don't really correspond to CPU hardware features, etc. All of that comes from the GPU heritage of OpenCL, but adds unnecessary complexity and unnecessarily hurts performance when running on CPUs. My opinion is that making ispc run on the GPU would in the end require making a number of similar compromises, which in turn would make it less appealing for the CPU.

-matt
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Fused Multiply-Add and HSARichard H.2012/02/07 07:29 PM
  Fused Multiply-Add and HSADavid Kanter2012/02/07 11:54 PM
    "CUDA is on its way out"pk2012/02/09 05:37 AM
      "CUDA is on its way out"David Kanter2012/02/09 11:49 AM
        "CUDA is on its way out"Bryan Catanzaro2012/02/09 12:44 PM
          "CUDA is on its way out"David Kanter2012/02/09 05:48 PM
            "CUDA is on its way out"Anon2012/02/09 07:11 PM
              "CUDA is on its way out"David Kanter2012/02/10 12:00 AM
                "CUDA is on its way out"Michael S2012/02/10 04:54 AM
                "CUDA is on its way out"Anon2012/02/10 06:42 PM
                  Proprietary SW interfaces and hardware vendorsDavid Kanter2012/02/10 09:07 PM
                    Proprietary SW interfaces and hardware vendorsAnon2012/02/11 04:08 AM
                      Proprietary SW interfaces and hardware vendorsAnon2012/02/11 04:12 AM
                      Proprietary SW interfaces and hardware vendorsDel2012/02/11 08:39 AM
                  "CUDA is on its way out"Del2012/02/11 08:33 AM
                "NVIDIA is on its way out"Brendan2012/02/10 10:42 PM
                  "NVIDIA is on its way out"anonymous2012/02/11 11:37 AM
              "CUDA is on its way out"Del2012/02/11 08:22 AM
                "CUDA is on its way out"Anon2012/02/11 04:11 PM
                  ispc on GPUsMatt Pharr2012/02/12 10:02 AM
                    ispc on GPUsAnon2012/02/13 03:34 PM
          "CUDA is on its way out"Erwin Coumans2012/02/09 09:39 PM
            "CUDA is on its way out"Brett2012/02/10 12:54 PM
              "CUDA is on its way out"David Kanter2012/02/10 04:00 PM
              "CUDA is on its way out"Anon2012/02/10 06:45 PM
                "CUDA is on its way out"Brett2012/02/10 08:20 PM
                  "CUDA is on its way out"David Kanter2012/02/10 08:58 PM
                    "CUDA is on its way out"Brett2012/02/11 07:15 AM
                      Macroscalarnone2012/02/11 08:40 AM
        "CUDA is on its way out"Anon2012/02/10 06:39 PM
          "CUDA is on its way out"David Kanter2012/02/10 09:19 PM
            "CUDA is on its way out"Anon2012/02/11 04:33 AM
          "CUDA is on its way out"NN2012/02/14 04:24 PM
            "CUDA is on its way out"Anon2012/02/15 04:16 PM
        "CUDA is on its way out"bakaneko2012/02/11 05:31 AM
      "CUDA is on its way out"Aaron Spink2012/02/10 12:29 AM
  Fused Multiply-Add and HSAEduardoS2012/02/08 03:11 PM
    Fused Multiply-Add and HSAFoo_2012/02/09 06:24 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell green?