
Ebook Info
- Published: 2012
- Number of pages: 432 pages
- Format: PDF
- File Size: 8.37 MB
- Authors: Michael McCool
Description
Structured Parallel Programming offers the simplest way for developers to learn patterns for high-performance parallel programming. Written by parallel computing experts and industry insiders Michael McCool, Arch Robison, and James Reinders, this book explains how to design and implement maintainable and efficient parallel algorithms using a composable, structured, scalable, and machine-independent approach to parallel computing. It presents both theory and practice, and provides detailed concrete examples using multiple programming models.The examples in this book are presented using two of the most popular and cutting edge programming models for parallel programming: Threading Building Blocks, and Cilk Plus. These architecture-independent models enable easy integration into existing applications, preserve investments in existing code, and speed the development of parallel applications. Examples from realistic contexts illustrate patterns and themes in parallel algorithm design that are widely applicable regardless of implementation technology.Software developers, computer programmers, and software architects will find this book extremely helpful.
User’s Reviews
Editorial Reviews: Review “I’ve been dreaming for a while of a modern accessible book that I could recommend to my threading-deprived colleagues and assorted enquirers to get them up to speed with the core concepts of multithreading as well as something that covers all the major current interesting implementations. Finally I have that book.” –Martin Watt, Principal Engineer, Dreamworks Animation Review The simplest way for developers to learn patterns for high-performance parallel programming From the Back Cover Programming is now parallel programming. Much as structured programming revolutionized traditional serial programming decades ago, a new kind of structured programming, based on patterns, is relevant to parallel programming today. Parallel computing experts and industry insiders Michael McCool, Arch Robison, and James Reinders describe how to design and implement maintainable and efficient parallel algorithms using a pattern-based approach. They present both theory and practice, and give detailed concrete examples using multiple programming models. Examples are primarily given using two of the most popular and cutting edge programming models for parallel programming: Threading Building Blocks, and Cilk Plus. These architecture-independent models enable easy integration into existing applications, preserve investments in existing code, and speed the development of parallel applications. Examples from realistic contexts illustrate patterns and themes in parallel algorithm design that are widely applicable regardless of implementation technology.The patterns-based approach offers structure and insight that developers can apply to a variety of parallel programming modelsDevelops a composable, structured, scalable, and machine-independent approach to parallel computingIncludes detailed examples in both Cilk Plus and the latest Threading Building Blocks, which support a wide variety of computers About the Author Michael McCool has research and application experience in the areas of data mining, computer graphics (specifically sampling, rasterization, texture hardware, antialiasing,shading, illumination, and visualization), medical imaging, signal and image processing, financial analysis,and languages and programming platforms for high productivity parallel computing. In order to commercialize research work into many-core computing platforms done while he was a professor at the University of Waterloo,in 2004 he co-founded RapidMind, which in 2009 was acquired by Intel. Currently he is a Software Architect with Intel working on Array Building Blocks and an Adjunct Associate Professor with the University of Waterloo. In addition to his university teaching, he has presented tutorials at Eurographics, SIGGRAPH, and SC on graphics and/or parallel computing.James Reinders is a senior engineer who joined Intel Corporation in 1989 and has contributed to projects including the world’s first TeraFLOP supercomputer (ASCI Red), as well as compilers and architecture work for a number of Intel processors and parallel systems. James has been a driver behind the development of Intel as a major provider of software development products, and serves as their chief software evangelist. James has published numerous articles, contributed to several books and is widely interviewed on parallelism. James has managed software development groups, customer service and consulting teams, business development and marketing teams. James is sought after to keynote on parallel programming, and is the author/co-author of three books currently in print including Structured Parallel Programming, published by Morgan Kaufmann in 2012.Arch Robison is the architect of Threading Building Blocks.He was the lead developer for KAI C++, which established the state of the art for C++ optimization in the ‘90s. He has 12 software patents, 3 award winning entries in the International Obfuscated C Code Contest, and an Erdös number of 3. He is also the (uncredited) author of the TBB Tutorial and Design Patterns documents, as well as most of the TBB Reference manual, and wrote a chapter of the Intel Multi-core Programming book. He has presented TBB tutorials at OSCON, PADTAD, and HPCC07, and invited talks on TBB at LCPC, Texas A&M, U. Maryland, Indiana U., MIT, and UIUC. Finally, he has presented short classes (three 75 minute sessions) on parallel programming at UIUC. Read more
Reviews from Amazon users which were colected at the time this book was published on the website:
⭐I’ve bought the eBook edition of this book so I can only comment on that. The language used in the book is easy and fluent enough to get you going on even over passages that you don’t immediately grasp. The authors take great pain and a lot of paper to introduce the history of parallel processing, the actual architectures of today’s computers, today’s compilers, how processors manage memory, use vectorization, switch contexts, lose time waiting for hard-disks or system memory and so on and so forth. All this is very thorough and interesting if you didn’t know any of it before – but then you wouldn’t just throw yourself into parallel programming right now, wouldn’t you? 😉 Since at least James Reinders is an employee of intel they do only talk about intel products and CPU’s. They find very elegant ways to justify that decision but it really all just comes down to marketing.The content and samples are well explained and give you enough practical ammunition at hand to have a start using the latest tools and libraries on the market. The emphasis on ThreadingBuildingBlocks (TBB) and CilkPlus, both from intel, is not per se bad since they are both FOSS and very useful. The only setback is if you don’t actually use an intel compiler suite. Because as of now only TBB can be used on every modern compiler. For CilkPlus only intels compilers and a specially customized version of gcc 4.8 (don’t know where you can get it though) offer support.Since I bought the eBook version I was very disappointed at the quality of the conversion. Apart from the occasional spelling mistakes I found that all the graphics/diagrams and code samples in the book are included as pixel pictures with a low resolution and low contrast. That makes it impossible to read it on a 6″ ePaper device! And it is still unpleasant on my PC – add to this that no code from the book can be searched nor copied to the clipboard!So why am I still giving it 4 stars? Because the book has a lot of good info’s, indispensable knowledge and how to’s and it was made by intel folks who know their s*** when it comes to use processors to their fullest. If you are patient enough to digest the long intro and can live with the flaws of the eBook conversion then you have a book that is by those named attributes inevitable as of today! 😀 But I sure hope they give us an update of it soon that is actually optimized to read on an eReader! Pliiiiiis!!
⭐Worth the money for Chapter 1. If you don’t already “think parallel” this chapter will teach you what that means. The structures (akin to design patterns) shown in the book then enable you to use known best practices to take advantage of increasingly parallel processors. The best mind-expanding book on programming I’ve read this year, for sure.Every processor you are likely to write for today is almost certainly multi core. It may have vectorization capability. So, today, all programming IS parallel programming. If you don’t enable parallel execution in algorithms that could expose parallelism, that’s just an example of bad programming on a processor that could be executing code in parallel. Common intel processors today have 4 cores (8 threads with hyperthreading). Newest Intel Xeon processors have up to 15 cores. Each is hyperthreaded, but even if we ignore that, single threaded code uses 1/15 of the capability of a 15 core processor. Learn how NOT to leave the majority of the processors capability on the table. Clock rates are no longer increasing, it is necessary to write explicitly parallel code that can “scale up” when it is run on a future processor with more cores.
⭐This is the best book on the topic I could find. All of the concepts are clear, concise, and include examples. There is a background discussion on hardware, all the code samples are available for download, and the authors have a clear command of the topic. This book was used to create a course on parallel programming at the University of Oregon (UO). UO has made all of the course materials free and available to anybody who would like them. This includes all lectures and lab assignments.I am using this book and the UO materials for a study group at work. So far everyone likes this book with the only complaint being that most of the examples in the book are for mathematical computations.I did a lot of research before picking a book on this topic and this was by far the best one I could find.
⭐I cannot recommend this book at all, in any way. I bought it based in part on the good reviews. Do not believe them. It’s a terrible, awful book.For starters, two of the main technologies explored often in the book, namely Cilk Plus and Intel’s Array Building Blocks (ArBB), are deprecated and no longer supported.But secondly, that may not actually matter because this book won’t teach you how to use any technology whatsoever. What this book does is introduce one concept after another briefly in a cursory and introductory way with no depth. The flow of it somewhat like this: “Modern programming is basically parallel programming. We need to think that way. We’ve got a lot of cores on machines, and we’re carrying around baggage from serial-programming thinking. Sit tight while we go over Moore’s Law and how we got here … [too many pages later] There’s a thing called the map pattern. This is what a simple loop using it looks like in Cilk Plus, here’s TPP, here’s OpenMP, here’s ArBB (please refer to each technology’s specification documents for what all those lines of code actually mean). There’s another one called reduce. Here’s what that looks like in each. Okay, there’s one called stencil. That one’s too complicated, look it up elsewhere …”Just a giant waste of time. Utterly worthless and certainly NOT worth the price. I regret being suckered into buying it.Big fat AVOID.
⭐This book is far too abstract and theoretical, and not readily applicable. Maybe the description is what is wrong, and not the book itself, but they are not aligned.
⭐I have to admit, this book is extremely useful to keep as a reference. It’s written by Intel engineers, so they heavily promote Thread Building Blocks and CilkPlus, but they give a fair amount of attention to other parallel processing models (e.g., OpenML, OpenCV, etc.)
⭐An excellent book.
⭐Wenn man ein wenig Systematik in seine parallelen Programmierkünste bringen will, ist das hier das Buch zum Einsteigen.Die Autoren behandeln die wichtigsten Pattern der thread-basierten Programmierung mit geteiltem Speicher (Shared-Mutability). Andere parallele Modelle, wie z. B. nachrichtenbasierte oder aktor-basierte Architekturen werden nicht behandelt. Das ist nicht unbedingt ein Nachteil, denn die Darstellung der Pattern ist Weltklasse. Die Autoren zeigen, dass sie da sehr kompetent sind und lange selber mit diesen Pattern gearbeitet haben.Schön an diesem Buch ist, dass sie genau die richtige Mischung zwischen Theorie und Praxis gefunden haben: Für jedes Pattern wird Beispielcode gegeben aber auch asymptotisch analysiert und die möglichen Performancegewinne durch die Parallelisierung abgeschätzt. Sehr gut finde ich die Erklärung mit den vielen einfachen Diagrammen.Die Autoren arbeiten irgendwie alle für Intel und konzentrieren sich daher auf die Thread Building Blocks (TBB) und auf Cilk Plus. OpenMP und OpenCL werden nur am Rande behandelt. Letzteres ist einer der Gründe dafür, nur vier Sterne für dieses Buch zu geben. Es ist noch verbesserbar. Z. B. werden die denormalized floats am Rande versteckt in Abschnitt 8.12. In Kapitel 6.3 fehlt eine Erklärung oder ein Beispiel für die Konvertierung von Scatter zu Gather.Ich persönlich kann stark von diesem Buch profitieren. Auch wenn ich viele Pattern schon kannte, hat mich die klare Darstellung beeindruckt. Ich werde die Pattern und Diagramme in meinen Projekten einsetzen.I am using this book for a university course on Parallel and Distributed Systems. The authors explained the subject matter very clearly, though they may have delved a bit further into non-intel sponsored products and standards. (Which is understandable, considering the authors’ affiliation).I have been doing concurrent programming for 3 years and have studied more than 3-4 courses about it. This book though, made me really think in a parallel way and the introduction of patterns I haven’t known before made it even better.Recommended to anyone that wants to get better educated in real-world concurrent/parallel programming.
⭐Un ouvrage de référence, remarquablement rédigé. Deux grandes parties :1. les concepts, les design patterns2. des exemples concrets (tirés des mathématiques élémentaires)Laurent
⭐
Keywords
Free Download Structured Parallel Programming: Patterns for Efficient Computation 1st Edition in PDF format
Structured Parallel Programming: Patterns for Efficient Computation 1st Edition PDF Free Download
Download Structured Parallel Programming: Patterns for Efficient Computation 1st Edition 2012 PDF Free
Structured Parallel Programming: Patterns for Efficient Computation 1st Edition 2012 PDF Free Download
Download Structured Parallel Programming: Patterns for Efficient Computation 1st Edition PDF
Free Download Ebook Structured Parallel Programming: Patterns for Efficient Computation 1st Edition