C++ AMP to target Khronos SPIR and HSAIL


At AMD’s Developer Summit 2013, AMD announced Clang support for C++ AMP via LLVM backend. The project augments Clang and LLVM with C++ AMP and uses Khronos provisional SPIR 1.2 or HSAIL as its underlying compute driver substrate. AMD plans to release version 1.0 of the project (based on C++ AMP Open Specfication v1.2) by March 2014 as an open source project. If you can’t wait until March and don’t mind rough edges, the preview bits of the project is available at https://bitbucket.org/multicoreware/cppamp-driver-ng/wiki/Home. Additionally some samples targeting SPIR are available at https://bitbucket.org/multicoreware/cppamp-sandbox/wiki/Home.

When Microsoft announced C++ AMP back in June 2011, we also announced that we would release C++ AMP specification under the Microsoft Community Promise – essentially opening up the specification to allow any C++ compiler implementer to add C++ AMP to their compiler. AMD’s work is a prime example of the platform portability intended by the community promise. For this work, we are providing design and validation inputs to AMD and are truly delighted by this announcement for several reasons.

First, this validates that C++ AMP specification is truly platform neutral and allows developers to write code once and target multiple hardware and platforms. One of the cornerstones for C++ AMP is portability (others are performance and productivity) and we are happy to see that with this project, C++ AMP becomes the high level language with multiple underlying implementations including DirectCompute, Khronos SPIR 1.2 for OpenCL and HSAIL.

Second, releasing this as open source allows the community to engage and develop C++ AMP. We view this project as the seed that would allow others to implement support for C++ AMP in other compilers. So, if you are interested in contributing to the project or know more about the project, please go to the project page.

At Microsoft, we are committed to ensure that Visual Studio continues to offer premier developer experience for C++ AMP developers. In the same vein, we are also committed to update C++ AMP technology and our Open Spec to track hardware evolutions and drive innovation. Additionally, we also have a set of additional libraries for C++ AMP in open source format and are inviting you to contribute to this effort as well.


Comments (7)

  1. small_mountain says:

    So, does this mean I'll be able to use C++ AMP in XCode/MacOSX sometime soon??

  2. bobyg says:

    @small_mountain,

    Yes, we intend to merge this into official Clang line. Please refer to this post for pending work hsafoundation.com/bringing-camp-beyond-windows-via-clang-llvm. We do hope others will pick up and make this technology available for all platforms.

  3. Brian Jones says:

    I could imagine Apple being hostile to this.

  4. MySchizoBuddy says:

    @Brian

    Apple isn't hostile to CUDA on mac why would it be hostile to C++ AMP considering the underlying implementation is going to be OpenCL.

  5. Hassan says:

    may I ask which version is this? will it fully support C++AMP 1.2?

  6. bobyg says:

    @Hassan,

    This will support C++ AMP open spec v1.2 (based on C++ AMP v1.2) required features. The optional parts of the spec (DX dependent parts) are not going to be supported.

  7. mike says:

    Right On, guys !