Going Deep

C++ AMP: Yossi Levanoni - Architecture and Design

Download this episode

Download Video


C++ AMP (Accelerated Massive Parallelism) is a small set of open specification language extensions (two of them) and a single library (amp.h) that makes general purpose GPU programming (aka GPGPU) a first class, seamless experience in modern C++.

You've been able to experiment with C++ AMP since the VS11 Developer Preview back in September 2011. We figured it was a good time to go C9 on the C++ AMP team. So, we did. Four interviews have been conducted that pretty thoroughly cover C++ AMP and the people who design, implement, and test it. C++ AMP is a great technology for native developers seeking to harness the power of the GPU using the language and tools they are already comfortable with. C++ AMP is also an open specification and we'll see other compiler vendors producing C++ AMP implementations for their target platforms soon—that's been the goal since Day 1.

Continuing with our four part series, we meet one of the architects of C++ AMP, Yossi Levanoni. You've met him before on C9. In this conversation, we go deeper into the design of C++ AMP (including exploring what led to some of the design decisions) and, of course, Yossi draws diagrams on the whiteboard like all architects must! You'll learn quite a bit about how C++ AMP works and why. Thanks for spending time with us, Yossi, and I'm sorry for mangling your last name!

See Part 1 - Daniel Moth: Overview
See Part 3 - The AMP Development Team Roundtable
See Part 4 - The AMP Test Team Hallway Office Tour



Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • John

      From what i've seen this is an amazing API.If only next WP and XBOX would have direct compute possibility. It would be nice to have GPU code that goes across platforms so easy.

    • Castaa

      For both these recent AMP videos, they end early, mid interview.  At least for the HQ WMV downloadable files.

    • Charles

      @Castaa: I can't reproduce this. I just downloaded the HQ WMV file and it works fine, all the way through.


    • Waldemar

      Yeah sometimes the downloading just stops in the middle of the transfer as if has finished. There is no other way then to download again. Sometimes if you are fast enough you can press resume.

    • Ivan

      I always thought that AMP provides 100x speedup for 1% of the projects that can benefit from AMP because they use certain algorithms... So Charles it would be great if you could ask AMPers is there any use for AMP for "generic" code(not scieentific, not data mining... ) coding... Yes I know that there is no generic coding, but I guess you at MS have access to certain code bases and that you ran some analysis of how much of it is AMPable :)

    • Charles

      @Waldemar: Thanks for the info. We are seeing issues with our CDN (or so it seems). Sorry for the skipping and strange download behavior. If I may ask, Wademar and Castaa, where are you located, geographically?


    • Charles

      @Ivan: It's a good question, Ivan. I'll rephrase it if I may to "How general purpose is GPGPU, really, today and in the near future".


    • Castaa

      I'm in San Francisco.  My Internet connection is ATT U-verse ISP and is pretty rock solid.  I downloaded both videos using Firefox 10 32-bit.  Both videos just stopped downloading before they were complete I guess, with no error.  I assumed they were done.

    • Matt_PD

      Nice interview! I've got one question, perhaps you can pass it along: is there any overhead involved in the rank-N to rank-3 translation done by the GPU stub (e.g., is it compile-time or run-time)?

    • Daniel Moth

      @Ivan: C++ AMP enables massive data parallelism. Typically that has been used in game development on one extreme, and Technical or Scientific computing on the other. With the capable hardware becoming more ubiquitous, and the programming model more approachable, you can expect those domains to become more mainstream but also new scenarios to start benefiting, e.g. augmented reality, image/video manipulation, voice recognition and other such consumer facing opportunities. For existing apps, look at each loop in your application and ask yourself: am I processing a lot of data and/or performing expensive operations in this loop? If the answer is yes, it is a good candidate.

      @Matt_PD: It's runtime overhead (but we have optimized this as much as we can). Although we have enabled this feature, we have not come across any real world cases that have taken advantage of it yet, so if you use C++ AMP for >3 dimensions, please let us know.

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.