Considerable Data Parallelism On The Gpu With Microsoft’s C++ Amp

Over the last decade an exceedingly loud chorus of industry and academia experts has sounded the alarms bells: the free lunch is over! No longer can we, software developers, expect new hardware to benevolently run our code faster and faster, without us lifting a finger to help the hardware along. The era of speed gains which are transparent to the software, was over. It became clear that CPUs were not going to get much faster: they tick today at roughly the same rate they did about five years ago (and that would be about 3Ghz, or 3 billion times a second). That CPU speed would plateau in such an inconsiderate manner was something we didn’t really watch out for, and then it happened. It meant that we could no longer hope to author slow, piggish, applications and hope to be buoyed by a faster generation of hardware that was just around the corner.

Let’s try to visualize this with an analogy from a somewhat surprising domain: let’s imagine that our processor is a tractor (yes, a tractor!) with which we want to plow a field. For a long time, the tractor makers of our world have been making speedier tractors that cut down the time it takes to do the task, freeing us up to have more time for fun in the sun. But now, those tractors can’t get any speedier, because they are already going so fast that making them any faster would require fitting them with a jet engine which would overheat and explode. It’s not practical. So the tractor makers are telling us, “look, instead of giving you a single tractor that runs faster, we could give you multiple tractors for the price of one. Together, they’ll get your job finished faster, but you have to do your part: you have to train more tractor drivers and figure out how to divvy up the work between them, and make sure they do not crash into each other. If you do all of that, then you could benefit from multiple tractors and what’s more, if you find a general way of planning-out how to achieve the work with a variable number of tractors, then you’d be ready to take advantage of an ever-increasing number of those machines when they become available.”

The obvious analogy here is to the advent of the multi-core chip designs. Instead of squeezing additional performance out of individual cores, chip makers are instead shrinking the size of individual cores and fitting more of them on the same chip. More tractors for us! Our part of the deal is to make our code efficient by feeding work into those parallel cores while still keeping the code correct given the new hazards of races and deadlocks.

Fortunately, platform companies such as Microsoft were there to help with parallel programming models which take a lot of the guesswork out of the task of making your code parallel and scalable (meaning: it can adapt without rewrite to increasing levels of parallelism). Starting from Visual Studio 2010 Microsoft offered the Parallel Patterns Library (PPL) to native Visual C++ developers and the Task Parallel Library (TPL) and Parallel LINQ (PLINQ) to .NET developers

C,C++ programming concepts are easy to get clear at your home with experts they can  provide help in coding problems and to know about error and they can also provide C,C++assignment help ,not only in C or C ++ many experts are there for programming league help assembly experts can provide Assembly language programming assignment help.

Resource article:


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s