Feeds

Microsoft juices C++ for massively parallel computing

Plug in the AMP

New hybrid storage solutions

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." ®

Reducing the cost and complexity of web vulnerability management

More from The Register

next story
New 'Cosmos' browser surfs the net by TXT alone
No data plan? No WiFi? No worries ... except sluggish download speed
'Windows 9' LEAK: Microsoft's playing catchup with Linux
Multiple desktops and live tiles in restored Start button star in new vids
iOS 8 release: WebGL now runs everywhere. Hurrah for 3D graphics!
HTML 5's pretty neat ... when your browser supports it
Mathematica hits the Web
Wolfram embraces the cloud, promies private cloud cut of its number-cruncher
Google extends app refund window to two hours
You now have 120 minutes to finish that game instead of 15
Mozilla shutters Labs, tells nobody it's been dead for five months
Staffer's blog reveals all as projects languish on GitHub
SUSE Linux owner Attachmate gobbled by Micro Focus for $2.3bn
Merger will lead to mainframe and COBOL powerhouse
iOS 8 Healthkit gets a bug SO Apple KILLS it. That's real healthcare!
Not fit for purpose on day of launch, says Cupertino
Profitless Twitter: We're looking to raise $1.5... yes, billion
We'll spend the dosh on transactions, biz stuff 'n' sh*t
prev story

Whitepapers

Secure remote control for conventional and virtual desktops
Balancing user privacy and privileged access, in accordance with compliance frameworks and legislation. Evaluating any potential remote control choice.
WIN a very cool portable ZX Spectrum
Win a one-off portable Spectrum built by legendary hardware hacker Ben Heck
Intelligent flash storage arrays
Tegile Intelligent Storage Arrays with IntelliFlash helps IT boost storage utilization and effciency while delivering unmatched storage savings and performance.
High Performance for All
While HPC is not new, it has traditionally been seen as a specialist area – is it now geared up to meet more mainstream requirements?
Beginner's guide to SSL certificates
De-mystify the technology involved and give you the information you need to make the best decision when considering your online security options.