Tuesday, March 26, 2013

C++ AMP - Accelerated Massive Parallelism with Microsoft Visual C++

C++ AMP - Accelerated Massive Parallelism with Microsoft Visual C++

Authors Year Pages Publisher Dimensions, inch. File type Size, Mb First 20 pages
Kate Gregory
Ade Miller
2012 356 Microsoft Press 7.37х9 PDF 20 First 20 pages


Book Description
Capitalize on the faster GPU processors in today's computers with the C++ AMP code library--and bring massive parallelism to your project. With this practical book, experienced C++ developers will learn parallel programming fundamentals with C++ AMP through detailed examples, code snippets, and case studies. Learn the advantages of parallelism and get best practices for harnessing this technology in your applications.
Discover how to:

  • Gain greater code performance using graphics processing units (GPUs)
  • Choose accelerators that enable you to write code for GPUs
  • Apply thread tiles, tile barriers, and tile static memory
  • Debug C++ AMP code with Microsoft Visual Studio®
  • Use profiling tools to track the performance of your code



Detailed explanation: ID 10011



Editorial Reviews

Use your knowledge of C++ to take advantage of graphics processing units (GPUs) and other data-parallel hardware--and achieve maximum performance in your applications. Led by two expert C++ programmers, you'll learn GPU programming fundamentals with C++ AMP and get best practices for harnessing this technology.

Discover how to:

  • Create applications that run faster using C++ and Microsoft Visual Studio® 2012
  • Produce the most dramatic acceleration by modifying your algorithm with tiling
  •  Debug your parallel code with Microsoft Visual Studio
  • Track the performance of your code with profiling tools
  • Control how your application uses one or more accelerators to get maximum performance
  •  Interoperate with the Microsoft DirectX® platform

About the Author
Kate Gregory has been using C++ for over twenty years and is well-known as an instructor, speaker, and author. Managing, mentoring, technical writing, and technical speaking occupy much of her time, but she still writes code every week. Kate is the author of over a dozen books and speaks at DevTeach, TechEd (USA, Europe, Africa and TechDays, among others. Kate is a C++ MVP, a founding sponsor of the Toronto.NET Users Group, the founder of the East of Toronto .NET Users group, and a memberof adjunct faculty at Trent University in Peterborough. Since January 2002 she has been Microsoft Regional Director for Toronto and in January 2004 she was awarded theMicrosoft Most Valuable Professional designation for Visual C++. In June 2005 she won the Regional Director of the year award and in February 2011 she was designated Visual C++ MVP of the year for 2010. Her firm, Gregory Consulting Limited, is based in rural Ontario and helps clients adopt new technologies and adjust to the changing business environment.

Ade Miller is currently a Principal Software Architect at Microsoft Studios. He has had several roles at Microsoft, including working on big data platforms as Program Manager with the Windows HPC Server team and managing the patterns & practices group's agile engineering teams as their Development Lead. His primary interests are parallel and distributed computing and improving the way teams deliver software through engineering leadership.

He is one of the authors of Parallel Programming with Microsoft .NET and Parallel Programming with Microsoft Visual C++. Ade also writes and speaks about parallel computing and his experiences with agile software development at Microsoft and elsewhere.


Customer Reviews

Bravo! Well done! October 8, 2012
By Robert Smith

C++ AMP - Accelerated Massive Parallelism with Microsoft Visual C++ is the first book on the market to address the C++ AMP API. I preordered it months ago and when it finally arrived, I devoured it in just a few days.

The book starts with an overview of General Purpose GPU computing and how C++ AMP provides the developer the ability to write naturally parallel general purpose solutions (normally executed on the CPU) in C++ that will execute on the GPU.

Immediately following, in chapter 2, is a taste of the power of using Accelerated Massive Parallelism on the GPU, an NBody program that simulates the gravitational interaction between thousands of stars in 2 star clusters. Implemented first on the CPU and then with C++ AMP. The results are startling.

Then the learning begins with the C++ AMP API, which is implemented entirely with C++ templates and just 2 new keywords added to the C++ language. The authors explain the fundamentals of C++ AMP and provide enough code to demonstrate the handful of templates that make up the API. This is followed by more advanced techniques (Tiling) that speed up your C++ AMP programs even more.

As the book progresses, you will learn how to debug your C++ AMP code with the support for C++ AMP that was added to Visual Studio 2012: IntelliSence, GPU debugging and profiling with the concurrency visualizer. A few case studies, with plenty of code, are used to demonstrate what you have learned.

Other chapters include: Optimization, Working with Multiple Accelerators, Graphics Interop with Direct3D and the books finale with Tips, Tricks, and Best Practices.

If you work on projects that use large datasets that can be processed in parallel, you can move that work to the GPU and multiple accelerators without learning a new language. This book does a wonderful job of showing you how!

From the end of Ch. 1,
"With the cloud, using Infrastructure as a Service (IaaS) or Hardware as a Service (HaaS) offerings, you could conceivably leverage tens of thousands of hardware threads. But imagine being able to combine the two and reach the GPU cores on those cloud machines, reaching tens of millions of hardware threads. What could that enable?"

On a personal note, I submitted an issue I had to Microsoft Press through the books web site. In less than 3 hours I received a response from Ade Miller himself! That is a great demonstration of the author's commitment to the quality of this book.

AMP(lify) your computers game and simulation power by over 100 to 1 December 19, 2012By Robin T. Wernick

Many know that Microsoft runs background development projects that come to light from time to time with surprising advances. "C++ AMP" reveals one of those surprises that give a wake up call to programmers and technologists about the hidden computing reserves hiding in the depths of the GPU card. AMP is Microsofts foray into this area of "desktop supercomputing". The book introduces AMP by using a c++ starfield simulation that evolves from chapter to chapter. Starting with an introduction to the history of computing advancements, the book shows how Accelerated Massive Parallelism ( AMP ) is attainable on your personal computer.

There is an entry fee for this power. You will need to be comfortable programming in c++ and you must have a recently manufactured GPU. Furthermore, AMP is available only using the Microsoft Visual Studio 2012. The cost of the book is merely pocket change in comparison. However, I have built the starfield simulation expressed in this book and I can personally attest to a computing amplification of 112 times that of my CPU alone. The internet contains further details of how to get a high performance GPU to produce over 700 GFlops. If your hair is not standing on end by now, you don't have the heart of a technologist. This is equivalent to having a car that can do 20,000 miles per hour. Personal planitary transportation anyone? Then read a bit further.

Of course there are competing computing models that don't require Visual Studio 2012. Both OpenCL and CUDA programing SDKs can get you into the stratosphere on both Windows and Linux machines using their own c++ compilers. But, you won't have the integrated tools that Visual Studio can apply to load balancing and program testing.

I have been unaware until recently that anything sent to the GPU could be retrieved. Now that I know that with some familiarization with the AMP notation, I will be able to do both financial pattern matching for 40,000 stocks every day or build a fantastic multi-channel streaming audio mixer, I am going to pick up a copy of "GPU Computing Gems" and really find out what I can do with this new ability. I might even give myself a serious GPU upgrade this season.

Be advised though, this is a serious book on programming. You will need to be comfortable reading the technical jargon for this new technology and writing in native c++. If you want to gain a true understanding of the knowledge in this book, a background in simulating physics problems is a good place to start. Game simulation is another great starter.

The book contains nine chapters that lead you from sequential programming concepts popular now for over thirty years to the advanced use of parallel computing design. The nature of the GPU computing operations is introduced gradually as the simulation is advanced throughout the book. Visual Studio 2012 features and tools are also detailed to help you be a competent designer in this new venue. The writing is clear and comprehensive. I have been investigating Visual Studio 2012 for some weeks now in anticipation of trying out this computing tool using the newly released c11 version of c++ in the VS 2012 IDE and I think that the effort will be well worth while.

A reference for all C++ AMP developers October 17, 2012
By Bruno Boucard

With this book you will become an expert on C++ AMP even you if you are completely a beginner in GPU programming. The book contains several case studies that explain some advanced technics to gain speed like the tiled technic or using two GPU cards in same time. You will discover all things you need to create apps on Windows 7 and Windows 8. The book give you a lot of tips and tricks to succeeded this C++ AMP and Visual Studio 2012. You can use this book as a reference even if you have some skills in C++ AMP. If you have any experiences with GPU programming with CUDA or OpenCL, I recommend also this book, because it is perfect to learn this new C++ library. The authors, Kate and Ade have collaborated to produce an excellent reference about C++ AMP, pragmatic and very complete.


Detailed explanation: ID 10011

No comments:

Post a Comment