10.07.2015 Views

Is Parallel Programming Hard, And, If So, What Can You Do About It?

Is Parallel Programming Hard, And, If So, What Can You Do About It?

Is Parallel Programming Hard, And, If So, What Can You Do About It?

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1.5. GUIDE TO THIS BOOK 9other hand, clever transformations into forms permittingpartitioning can greatly enhance both performanceand scalability [Met99].1.4.6 How <strong>Do</strong> Languages and EnvironmentsAssist With TheseTasks?Although many environments require that the developerdeal manually with these tasks, there arelong-standing environments that bring significantautomation to bear. The poster child for these environmentsis SQL, many implementations of whichautomatically parallelize single large queries andalso automate concurrent execution of independentqueries and updates.These four categories of tasks must be carried outin all parallel programs, but that of course does notnecessarily mean that the developer must manuallycarry out these tasks. We can expect to see everincreasingautomation of these four tasks ask parallelsystems continue to become cheaper and morereadily available.Quick Quiz 1.13: Are there any other obstaclesto parallel programming?1.5 Guide to This BookQuick Quiz 1.14: Where are the answers to theQuick Quizzes found?Quick Quiz 1.15: <strong>So</strong>me of the Quick Quiz questionsseem to be from the viewpoint of the readerrather than the author. <strong>Is</strong> that really the intent?Quick Quiz 1.16: These Quick Quizzes just arenot my cup of tea. <strong>What</strong> do you recommend?1.5.2 Sample <strong>So</strong>urce CodeThis book discusses its fair share of source code, andin many cases this source code may be found in theCodeSamples directory of this book’s git tree. Forexample, on UNIX systems, you should be able totype:find CodeSamples -name rcu_rcpls.c -printto locate the file rcu_rcpls.c, which is called outin Section 8.3.4. Other types of systems have wellknownways of locating files by filename.The source to this book may be found in thegit archive at git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git,and git itself is available as part of mostmainstream Linux distributions. PDFsof this book are sporadically posted athttp://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html.This book is not a collection of optimal algorithmswith tiny areas of applicability; instead, it is a handbookof widely applicable and heavily used techniques.We of course could not resist the urge toinclude some of our favorites that have not (yet!)passed the test of time (what author could?), butwe have nonetheless gritted our teeth and banishedour darlings to appendices. Perhaps in time, some ofthem will see enough use that we can promote theminto the main body of the text.1.5.1 Quick Quizzes“Quick quizzes” appear throughout this book. <strong>So</strong>meof these quizzes are based on material in which thatquick quiz appears, but others require you to thinkbeyond that section, and, in some cases, beyond theentire book. As with most endeavors, what you getout of this book is largely determined by what youare willing to put into it. Therefore, readers who investsometimeintothesequizzeswillfindtheireffortrepaid handsomely with increased understanding ofparallel programming.Answers to the quizzes may be found in AppendixF starting on page 271.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!