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.