Feeds

Microsoft juices C++ for massively parallel computing

Plug in the AMP

Combat fraud and increase customer satisfaction

Fusion Summit Microsoft has announced a new technology designed to help C++ developers build massively parallel applications. Known as C++ Accelerated Massive Parallelism – or C++ AMP for short – the technology will be included in the next version of the company's Visual C++ compiler, and Microsoft plans to open up the specification for others to use.

Microsoft principal native-languages architect Herb Sutter unveiled the technology Wednesday morning at AMD's Fusion Developer Summit. Initially, C++ AMP will help devs take advantage of general purpose GPU computing (GPGPU), but in the future, Microsoft will extend the technology to multi-core architectures and beyond.

The goal of C++ AMP, Sutter said, is to take the ability to access the power of massively parallel computing out of the hands of the "priesthood" of expert programmers and bring it into the mainstream. Of course, C++ was never designed to be suited to the average guy on the street.

Taming the exotic

"Everything in the 'mainstream' starts out with the 'exotic'," read one slide from Sutter's presentation. The current exotic world is what Sutter calls "the jungle of heterogeneity." There are multiple types of processing cores roaming this jungle: complex out-of-order CPUs, simple in-order CPUs, various flavors of GPUs, and more-specialized cores. Each type of core excels at certain types of workloads.

The problem, Sutter explains, is that writing code in which one app can take advantage of each of these disparate units' strengths is exceptionally difficult, if not impossible, for mainstream programmers. "[But] as developers," he said, "it's no good if we can't write the code" for heterogeneous systems.

Enter C++ AMP.

"We think it's important for [massively parallel code] to be mainstream," he said, "so that you don't have to write 'Hello World' in a page and a half like you did with Windows 1.0, or like you do with parallel-processing 1.0 today."

Sutter noted that a lot of existing GPGPU methods use C, but Microsoft still went with C++. "We felt C++ was important – to use the strong typing [and] to use the strong, powerful abstractions while still being close to the metal," he said, also citing templates and exceptions as reasons the company chose C++.

The idea is to enhance the language without changing it too much. "We also think that it's important not to mess with a language more than you have to. And if you can do it without changing the language at all, so much the better."

According to Sutter's presentation and a demo by Daniel Moth – who also provides an introductory blog post – the jump to C++ AMP is minimal: a single language extension, in its first iteration.

"If you can use STL," Sutter said, "you can use C++ AMP, as well."

Portability is also key to C++ AMP's goals – mixing and matching hardware from any vendor, and writing just one executable that you can run on a wide range of hardware. And Microsoft is intent on "future-proofing" the technology. The first release will be GPU-centric, but Sutter said that in future releases, "[with] little or no code changes, we can spread it across multi-core and the cloud, as well."

The cloud

For Sutter, the age of parallelism is here. "If you look at from, oh, about the last ice age until now," he said, "we've been making a single-threaded execution go faster and faster – until about 2005 when the free lunch was over, and we made this turn to more and more out-of-order CPUs."

Since 2005, things have changed further. Some vendors, he noted, are going to lots of in-order CPUs. Massively parallel GPUs have been "in the market for general-purpose computation for a couple of years," Sutter said. "We talking easily thousands of cores – and I could without lying make that number higher."

Then he uttered the inevitable C-word. "But cloud also matters," he said. "It's hard to get numbers on how big the largest cloud applications actually are, but it's fair to say that they at least approach 100,000 cores."

If those cloud apps run on what Sutter calls "cloud plus GPU", the number of cores addressable in such a massive heterogeneous system skyrockets – to roughly 100 million cores, according to Sutter. "You can write this code today," he said. "[But] it's not easy. It's not for the mainstream". C++ AMP aims to make it easier.

"And if you don't think that's game-changing," Sutter said, "how long is your password? And how long will it take 100 million GPU cores running at – what? – a million attempts per second to crack your password, just by brute force?

"We're almost at the point where a kid could write that. And that is just the tiniest example of how game-changing this is."

Playing long ball

Naturally, Microsoft has all this in mind. "Our eye on the longer ball," Sutter said. "We're doing this today because it adds great value just doing the GPU. But that's only one facet of the trend to heterogeneous parallel computing. It also includes multi-core and cloud, and compute devices at all scales."

Of course, Microsoft is not alone in its effort to provide programming support for massively parallel computing, heterogeneous computing, or whatever you may choose to call it.

Nvidia's CUDA, for example, is tuned to its own GPUs, and Sutter admitted in a post-keynote Q&A that "if you want to get the absolute best performance from one vendor's GPU, you will hardly be able to do better than that vendor's GPU stack". Then there's open-source OpenCL – hardly a vendor-specific approach to GPGPU computing.

Google's open source Go programming language comes at the distributed-computing challenge from another angle: It's built specifically for concurrency, providing a form of parallelism from the bottom up.

But C++ AMP has the advantage of being an outgrowth of a high-performing veteran. C++ may have its complexity issues, but it's widely used – and even Google admits that C++ is faster than the current iteration of Go.

But don't expect to dig deep into C++ AMP anytime soon. The non-heterogeneous C++0x – the first major upgrade to C++ since it was ISO-certified 13 years ago – was only recently finalized and is due to be published this summer.

Sutter told his keyote crowd that C++ AMP would be part of the next version of Visual Studio, but when The Reg asked him after his talk whether we'd all have to wait until then to bang away on it, he said that later this year the company will provide "bits" of it for developers to try out.

But when we pressed him whether he could make a projection as to when the next version of Visual Studio itself will appear, he demurred. "I can make a projection: sometime after today." ®

High performance access to file storage

More from The Register

next story
Android engineer: We DIDN'T copy Apple OR follow Samsung's orders
Veep testifies for Samsung during Apple patent trial
This time it's 'Personal': new Office 365 sub covers just two devices
Redmond also brings Office into Google's back yard
Batten down the hatches, Ubuntu 14.04 LTS due in TWO DAYS
Admins dab straining server brows in advance of Trusty Tahr's long-term support landing
Microsoft lobs pre-release Windows Phone 8.1 at devs who dare
App makers can load it before anyone else, but if they do they're stuck with it
Half of Twitter's 'active users' are SILENT STALKERS
Nearly 50% have NEVER tweeted a word
Internet-of-stuff startup dumps NoSQL for ... SQL?
NoSQL taste great at first but lacks proper nutrients, says startup cloud whiz
Windows 8.1, which you probably haven't upgraded to yet, ALREADY OBSOLETE
Pre-Update versions of new Windows version will no longer support patches
Microsoft TIER SMEAR changes app prices whether devs ask or not
Some go up, some go down, Redmond goes silent
Red Hat to ship RHEL 7 release candidate with a taste of container tech
Grab 'near-final' version of next Enterprise Linux next week
Ditch the sync, paddle in the Streem: Upstart offers syncless sharing
Upload, delete and carry on sharing afterwards?
prev story

Whitepapers

Designing a defence for mobile apps
In this whitepaper learn the various considerations for defending mobile applications; from the mobile application architecture itself to the myriad testing technologies needed to properly assess mobile applications risk.
3 Big data security analytics techniques
Applying these Big Data security analytics techniques can help you make your business safer by detecting attacks early, before significant damage is done.
Five 3D headsets to be won!
We were so impressed by the Durovis Dive headset we’ve asked the company to give some away to Reg readers.
The benefits of software based PBX
Why you should break free from your proprietary PBX and how to leverage your existing server hardware.
Securing web applications made simple and scalable
In this whitepaper learn how automated security testing can provide a simple and scalable way to protect your web applications.