josh bloch charlie garrodcharlie/courses/17-214/2020...2020/04/09 · josh bloch charlie garrod...
TRANSCRIPT
![Page 1: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/1.jpg)
1 17-214
PrinciplesofSoftwareConstruction: Objects,Design,andConcurrencyPart3:ConcurrencyIntroductiontoconcurrency,part4InthetrenchesofparallelismJoshBloch CharlieGarrod
![Page 2: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/2.jpg)
2 17-214
Administrivia
• Homework5BestFrameworksavailabletoday• Homework5cdueTuesday,11:59p.m.
![Page 3: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/3.jpg)
3 17-214
KeyconceptsfromTuesday
![Page 4: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/4.jpg)
4 17-214
Policiesforthreadsafety
1. Thread-confinedstate–mutatebutdon’tshare2. Sharedread-onlystate–sharebutdon’tmutate3. Sharedthread-safe–objectsynchronizesitselfinternally4. Sharedguarded–clientsynchronizesobject(s)externally
![Page 5: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/5.jpg)
5 17-214
3.Sharedthread-safestate
• Thread-safeobjectsthatperforminternalsynchronization• Youcanbuildyourown,butnotforthefaintofheart• You’rebetteroffusingonesfromjava.util.concurrent• j.u.calsoprovidesskeletalimplementations
![Page 6: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/6.jpg)
6 17-214
Adviceforbuildingthread-safeobjects
• Doaslittleaspossibleinsynchronizedregion:getin,getout– Obtainlock– Examineshareddata– Transformasnecessary– Dropthelock
• Ifyoumustdosomethingslow,moveitoutsidethesynchronizedregion
![Page 7: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/7.jpg)
7 17-214
Thefork-joinpattern
if(myportionoftheworkissmall)dotheworkdirectlyelsesplitmyworkintopiecesrecursivelyprocessthepieces
![Page 8: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/8.jpg)
8 17-214
Today
• Concurrencyinpractice:Inthetrenchesofparallelism
![Page 9: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/9.jpg)
9 17-214
Concurrencyatthelanguagelevel
• Consider:Collection<Integer>collection=…;intsum=0;for(inti:collection){sum+=i;}
• Inpython:collection=…sum=0foritemincollection:sum+=item
![Page 10: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/10.jpg)
10 17-214
ParallelquicksortinNesl
functionquicksort(a)=if(#a<2)thenaelseletpivot=a[#a/2];lesser={eina|e<pivot}; equal={eina|e==pivot};greater={eina|e>pivot};result={quicksort(v):vin[lesser,greater]};inresult[0]++equal++result[1];• Operationsin{}occurinparallel• 210-esquequestions:Whatistotalwork?Whatisspan?
![Page 11: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/11.jpg)
11 17-214
Prefixsums(a.k.a.inclusivescan,a.k.a.scan)
• Goal:givenarrayx[0…n-1],computearrayofthesumofeachprefixofx[sum(x[0…0]),sum(x[0…1]),sum(x[0…2]),…sum(x[0…n-1])]
• e.g.,x = [13, 9, -4, 19, -6, 2, 6, 3]prefixsums:[13, 22, 18, 37, 31, 33, 39, 42]
![Page 12: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/12.jpg)
12 17-214
Parallelprefixsums
• Intuition:Partialsumscanbeefficientlycombinedtoformmuchlargerpartialsums.E.g.,ifweknowsum(x[0…3])andsum(x[4…7]),thenwecaneasilycomputesum(x[0…7])
• e.g.,x = [13, 9, -4, 19, -6, 2, 6, 3]
![Page 13: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/13.jpg)
13 17-214
Parallelprefixsumsalgorithm,upsweep
Computethepartialsumsinamoreusefulmanner
[13, 9, -4, 19, -6, 2, 6, 3]
[13, 22, -4, 15, -6, -4, 6, 9]
![Page 14: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/14.jpg)
14 17-214
Parallelprefixsumsalgorithm,upsweep
Computethepartialsumsinamoreusefulmanner
[13, 9, -4, 19, -6, 2, 6, 3]
[13, 22, -4, 15, -6, -4, 6, 9]
[13, 22, -4, 37, -6, -4, 6, 5]
![Page 15: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/15.jpg)
15 17-214
Parallelprefixsumsalgorithm,upsweep
Computethepartialsumsinamoreusefulmanner
[13, 9, -4, 19, -6, 2, 6, 3]
[13, 22, -4, 15, -6, -4, 6, 9]
[13, 22, -4, 37, -6, -4, 6, 5]
[13, 22, -4, 37, -6, -4, 6, 42]
![Page 16: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/16.jpg)
16 17-214
Parallelprefixsumsalgorithm,downsweep
Nowunwindtocalculatetheothersums
[13, 22, -4, 37, -6, -4, 6, 42]
[13, 22, -4, 37, -6, 33, 6, 42]
![Page 17: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/17.jpg)
17 17-214
Parallelprefixsumsalgorithm,downsweep
Nowunwindtocalculatetheothersums
[13, 22, -4, 37, -6, -4, 6, 42]
[13, 22, -4, 37, -6, 33, 6, 42]
[13, 22, 18, 37, 31, 33, 39, 42]
• Recall,westartedwith:[13, 9, -4, 19, -6, 2, 6, 3]
![Page 18: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/18.jpg)
18 17-214
Doublingarraysizeaddstwomorelevels
Upsweep
Downsweep
![Page 19: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/19.jpg)
19 17-214
Parallelprefixsums
pseudocode//Upsweepprefix_sums(x):fordin0to(lgn)-1://disdepthparallelforiin2d-1ton-1,by2d+1:x[i+2d]=x[i]+x[i+2d]//Downsweepfordin(lgn)-1to0:parallelforiin2d-1ton-1-2d,by2d+1:if(i-2d>=0):x[i]=x[i]+x[i-2d]
![Page 20: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/20.jpg)
20 17-214
Parallelprefixsumsalgorithm,incode
• AniterativeJava-esqueimplementation:voiditerativePrefixSums(long[]a){intgap=1;for(;gap<a.length;gap*=2){parfor(inti=gap-1;i+gap<a.length;i+=2*gap){a[i+gap]=a[i]+a[i+gap];}}for(;gap>0;gap/=2){parfor(inti=gap-1;i<a.length;i+=2*gap){a[i]=a[i]+((i-gap>=0)?a[i-gap]:0);}}
![Page 21: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/21.jpg)
21 17-214
Parallelprefixsumsalgorithm,incode• ArecursiveJava-esqueimplementation:
voidrecursivePrefixSums(long[]a,intgap){if(2*gap–1>=a.length){return;}parfor(inti=gap-1;i+gap<a.length;i+=2*gap){a[i+gap]=a[i]+a[i+gap];}recursivePrefixSums(a,gap*2);parfor(inti=gap-1;i<a.length;i+=2*gap){a[i]=a[i]+((i-gap>=0)?a[i-gap]:0);}}
![Page 22: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/22.jpg)
22 17-214
Parallelprefixsumsalgorithm
• Howgoodisthis?
![Page 23: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/23.jpg)
23 17-214
Parallelprefixsumsalgorithm
• Howgoodisthis?– Work:O(n)– Span:O(lgn)
• SeePrefixSums.java,PrefixSumsSequentialWithParallelWork.java
![Page 24: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/24.jpg)
24 17-214
Goal:parallelizethePrefixSumsimplementation
• Specifically,parallelizetheparallelizableloopsparfor(inti=gap-1;i+gap<a.length;i+=2*gap){a[i+gap]=a[i]+a[i+gap];}
• Partitionintomultiplesegments,runindifferentthreadsfor(inti=left+gap-1;i+gap<right;i+=2*gap){a[i+gap]=a[i]+a[i+gap];}
![Page 25: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/25.jpg)
25 17-214
Recallfromthepreviouslecture:Fork/joininJava
• Thejava.util.concurrent.ForkJoinPoolclass– ImplementsExecutorService– Executes java.util.concurrent.ForkJoinTask<V>or
java.util.concurrent.RecursiveTask<V>or java.util.concurrent.RecursiveAction
• Inalongcomputation:– Forkathread(ormore)todosomework– Jointhethread(s)toobtaintheresultofthework
![Page 26: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/26.jpg)
26 17-214
TheRecursiveAction abstractclasspublicclassMyActionFooextendsRecursiveAction{publicMyActionFoo(…){storethedatafieldsweneed}@Overridepublicvoidcompute(){if(thetaskissmall){dotheworkhere;return;}invokeAll(newMyActionFoo(…),//smallernewMyActionFoo(…),//subtasks…);//…}}
![Page 27: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/27.jpg)
27 17-214
AForkJoinexample
• SeePrefixSumsParallelForkJoin.java• Seetheprocessorgo,gogo!
![Page 28: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/28.jpg)
28 17-214
Parallelprefixsumsalgorithm
• Howgoodisthis?– Work:O(n)– Span:O(lgn)
• SeePrefixSumsParallelArrays.java
![Page 29: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/29.jpg)
29 17-214
Parallelprefixsumsalgorithm
• Howgoodisthis?– Work:O(n)– Span:O(lgn)
• SeePrefixSumsParallelArrays.java• SeePrefixSumsSequential.java
![Page 30: Josh Bloch Charlie Garrodcharlie/courses/17-214/2020...2020/04/09 · Josh Bloch Charlie Garrod 17-214 2 Administrivia • Homework 5 Best Frameworks available today • Homework](https://reader033.vdocuments.us/reader033/viewer/2022052518/5f04a7fc7e708231d40f0d63/html5/thumbnails/30.jpg)
30 17-214
Parallelprefixsumsalgorithm
• Howgoodisthis?– Work:O(n)– Span:O(lgn)
• SeePrefixSumsParallelArrays.java• SeePrefixSumsSequential.java
– n-1additions– Memoryaccessissequential
• ForPrefixSumsSequentialWithParallelWork.java– About2nusefuladditions,plusextraadditionsfortheloopindexes– Memoryaccessisnon-sequential
• Thepunchline:– Don'trollyourown.Knowthelibraries– Cacheandconstantsmatter