C++ AMP open spec published

Feb 2012: Published original v0.9. May 2012: Attachment Updated to v0.99. August 2012: Updated to v1.0. December 2013: Published v1.2.

When we announced C++ AMP in June 2011, we also announced that it would be an open specification. Since then we have made multiple interim releases (of both the product and the open spec) with the final v1 release this month. To learn more about C++ AMP, visit one of the links on the right.

This blog post serves as the delivery vehicle for the C++ AMP open specification PDF document.

Microsoft supports and encourages anyone to implement the C++ AMP open specification on any platform, and we are actively working with interested parties already. If you are a compiler, hardware, or operating system vendor who is interested in C++ AMP support for your platform, read the spec and feel free to get in touch.

Even if you are not such a vendor, I think you'll enjoy reading the 140 pages as much as we enjoyed writing them, so go ahead and open the pdf now:

https://download.microsoft.com/download/4/0/E/40EA02D8-23A7-4BD2-AD3A-0BFFFB640F28/CppAMPLanguageAndProgrammingModel.pdf

To assist you in implementing the C++ AMP open specification, we are making available certain header files from our Visual Studio implementation under an Apache 2.0 license - you can download the headers in the attached ZIP file.

To further assist you with testing costs, we have made available the C++ AMP Conformance Test Suite.

C++ AMP Headers VS2012.zip

Comments

  • Anonymous
    February 03, 2012
    Spectacular work.  I have a bunch of detailed comments that I think would give some good recommendations from the scientific computing community (and probably also represent the financial services industry since I do research in economics).  Is sending you an email the right forum for giving formal comments on this specification, post everything to this blog, etc.?

  • Anonymous
    February 04, 2012
    Hi JLP Glad you like C++ AMP! If you are a vendor interested in implementing the open spec, get in touch over email and we can take it from there. For questions, bug reports, and suggestions, please use the MSDN forum so everybody can benefit from the open discussion. Also please start a new forum thread for each separate issue: social.msdn.microsoft.com/.../threads "Suggestions" in particular should be accompanied by a scenario (ideally with code) showing clearly why the existing API does not suffice. If you have extensive number of suggestions or otherwise feel that the MSDN forum approach suggested above will not work for your kind of feedback, we can also start on email (cppampfeedback at …) and can even have a follow up conference call to discuss further if needed. Whatever mechanism you use, we look forward to your comments and thank you for your interest.

  • Anonymous
    February 05, 2012
    Hi Daniel Is it possible to get a forwarding link to the spec (and updates)? I'd like to reference this in a conference paper (and PhD thesis) but don't particularly want a GUID or an out of date link in there.

  • Anonymous
    February 05, 2012
    Hi Zooba, you can treat the URL of this blog entry as the permalink to the open spec info. This blog post will be kept updated with the latest info on the location of the C++ AMP open specification, and this blog URL will never change: blogs.msdn.com/.../c-amp-open-spec-published.aspx If you need further input from the product team on your paper/thesis please feel free to email us (cppampfeedback at you knowhwere dot com)

  • Anonymous
    February 06, 2012
    Thanks Daniel, I will comment on the forum. One big and general question I have is how important scientific computing is for AMP compared to other use cases.

  • Anonymous
    February 06, 2012
    Hi JLP, we do not exclude any data parallel scenario that can benefit from hardware acceleration, so we look forward to addressing your specific questions and suggestions in the forum.

  • Anonymous
    February 08, 2012
    How many versions of C++ AMP will there be? CUDA has six so far and this fragmentation is dreadful... Since newer versions would only remove limitations and bring us back closer to plain C++, why not just stick to C++ in the first place and auto-vectorize anything suitable? This would hide the hardware specific details from the developer and keep the code compatible regardless of the platform or compiler. GCC and LLVM are already preparing to support auto-vectorization for AVX2, which compared to scalar code will offer a massive leap in performance. And it's not even tied to a specific language.

  • Anonymous
    February 08, 2012
    Hi Nicolas The Visual C++ compiler shipping with Visual Studio 11 has auto-vectorization and auto-parallelization built in. So for some class of user and some class of problem, that would really help. We hope to invest even more in future releases. With Visual Studio 2010 (and with further investments in Visual Studio 11) we also offer a library for more advanced multi-core scenarios: Parallel Patterns Library. With Visual Studio 11, we are enhancing our offerings with heterogeneous support in the form of a library (plus one key language feature): C++ AMP. As you read here, we are also making it an open specification, so everyone can potentially benefit everywhere. Please choose your preferred mechanism of parallelization on our platform or others. For any additional feedback, feel free to use our MSDN Forum: social.msdn.microsoft.com/.../threads

  • Anonymous
    May 29, 2012
    The comment has been removed

  • Anonymous
    August 30, 2012
    Arnaud, those issues were resolved, thanks.

  • Anonymous
    January 03, 2013
    Hi there, The first link (C++ AMP open specification PDF document) is dead apparently.

  • Anonymous
    January 03, 2013
    @Ano, the link has been restored. Thanks for reporting!