Introducing Shevlin Park–A Proof of Concept C++ AMP Implementation on OpenCL

Our friends at Intel have been working on a project called Shevlin Park, which is a proof of concept project that augments CLANG and LLVM with C++ AMP, and uses OpenCL as its underlying compute driver substrate.  Dillon Sharlet from Intel presented this work on November 8th at the LLVM Developer’s Meeting. It is important…


C++ AMP Training in Chicago Dec 11-14, 2012

If you’re in Chicago or thereabouts in December, our friends at Acceleware are offering their C++ AMP training during the week of December 11 – 14th.  We participated in one of their trainings in Redmond back in July and can attest to the high quality of the instructors and materials.  Sign up for the Chicago…


C++ AMP book now available

The C++ AMP book by Kate Gregory and Ade Miller is now in print and available online and in good bookstores! It is a great place to start if you’re looking to get up and running with C++ AMP. You can read a preview and buy the book on both the (paper and Kindle…


Floating-point arithmetic intricacies in C++ AMP

In this blog post I am going to describe a few discrepancies between floating-point behavior on the host-side and that on the accelerator-side in C++ AMP. This post will be of interest to anyone who pays attention to the floating-point accuracy and correctness in little more exotic scenarios involving floating-point numbers. The first section gives…


accelerator_view selection for C++ AMP parallel_for_each and copy operations

parallel_for_each and copy are among the most common accelerator operations performed in C++ AMP code. A parallel_for_each invocation denotes the execution of a data parallel C++ AMP kernel on a specific accelerator_view, while a copy invocation denotes transfer of data between a source and destination container allocated in host or accelerator memory. This blog post…


String search sample with C++ AMP

In this blog post I am going to share with you a string matching sample and describe the inner workings of the algorithm. On my machine with NVIDIA GTX580 the C++ AMP algorithm that I present below achieves up to 35X speedup over the std::strstr algorithm from standard C++ library. In the first section I…


Read-only array_view/array in C++ AMP – Part 2 of 2

In the previous post we looked at how you can specify the read-only restriction for array_view/array data collections in your C++ AMP code. In this part, we will look at the benefits of specifying the read-only restriction for your data collections when they are only read-from (not written-to) in a C++ AMP kernel or parts…


Julia fractal using C++ AMP

In this blog post, I will share a C++ AMP implementation of a fractal generator, rendering 4 dimensional Quaternion Julia fractals. I’ll show you screenshots of the app, then we’ll dive into the code, and then I’ll share a pointer of where you can get the Visual Studio project. Credits The original sample was written…


Read-only array_view/array in C++ AMP – Part 1 of 2

concurrency::array_view and concurrency::array are the most common vehicles for reading and writing data collections in your C++ AMP code. Often in your C++ AMP kernels or parts of your host code, some of the referenced data collections are purely inputs to the computation and are only read-from (never written-to) in that part of the code….


Mutable lambdas considered harmful in C++ AMP

Hello, my name is Jonathan Emmett and I’m a developer on the C++ AMP team. In this post I’ll be talking about the problems with mutable lambdas and function objects with non-const function call operators in C++ AMP kernels. There are a number of potential problems with these objects, and while they are currently allowed…