CSE 332 Data Abstractions: Introduction to Parallelism and Concurrency
Kate Deibel Summer 2012
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 1
CSE 332 Data Abstractions: Introduction to Parallelism and - - PowerPoint PPT Presentation
CSE 332 Data Abstractions: Introduction to Parallelism and Concurrency Kate Deibel Summer 2012 August 1, 2012 CSE 332 Data Abstractions, Summer 2012 1 Where We Are Last time, we introduced fork-join parallelism Separate programming
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 1
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 2
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 3
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 4
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 5
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 6
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 7
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 8
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 9
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 10
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 11
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 12
class VecAdd extends RecursiveAction { int lo; int hi; int[] res; int[] arr1; int[] arr2; VecAdd(int l,int h,int[] r,int[] a1,int[] a2){ … } protected void compute(){ if(hi – lo < SEQUENTIAL_CUTOFF) { for(int i=lo; i < hi; i++) res[i] = arr1[i] + arr2[i]; } else { int mid = (hi+lo)/2; VecAdd left = new VecAdd(lo,mid,res,arr1,arr2); VecAdd right= new VecAdd(mid,hi,res,arr1,arr2); left.fork(); right.compute(); left.join(); } } } static final ForkJoinPool fjPool = new ForkJoinPool(); int[] add(int[] arr1, int[] arr2){ assert (arr1.length == arr2.length); int[] ans = new int[arr1.length]; fjPool.invoke(new VecAdd(0,arr.length,ans,arr1,arr2); return ans; }
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 13
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 14
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 15
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 16
b c d e f
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 17
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 18
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 19
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 20
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 21
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 22
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 23
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 24
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 25
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 26
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 27
50 100 150 200 250 0.00% 5.00% 10.00% 15.00% 20.00% 25.00% Percentage of Code that is Sequential 1 Processor 4 Processors 16 Processors 64 Processors 256 Processors
Speedup for 1, 4, 16, 64, and 256 Processors T1 / TP = 1 / (S + (1-S)/P)
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 28
20 40 60 80 100 0.00% 2.00% 4.00% 6.00% 8.00% 10.00% Percentage of Code that is Sequential 1 Processor 4 Processors 16 Processors 64 Processors 256 Processors
Speedup for 1, 4, 16, 64, and 256 Processors T1 / TP = 1 / (S + (1-S)/P)
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 29
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 30
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 31
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 32
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 33
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 34
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 35
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 36
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 37
range 0,8 sum fromleft range 0,4 sum fromleft range 4,8 sum fromleft range 6,8 sum fromleft range 4,6 sum fromleft range 2,4 sum fromleft range 0,2 sum fromleft r 0,1 s f r 1,2 s f r 2,3 s f r 3,4 s f r 4,5 s f r 5,6 s f r 6,7 s f r 7.8 s f 6 4 16 10 16 14 2 8 10 26 30 10 36 40 76
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 38
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 39
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 40
range 0,8 sum fromleft range 0,4 sum fromleft range 4,8 sum fromleft range 6,8 sum fromleft range 4,6 sum fromleft range 2,4 sum fromleft range 0,2 sum fromleft r 0,1 s f r 1,2 s f r 2,3 s f r 3,4 s f r 4,5 s f r 5,6 s f r 6,7 s f r 7.8 s f 6 4 16 10 16 14 2 8 10 26 30 10 36 40 76 36 10 36 66 6 26 52 68 10 66 36
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 41
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 42
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 43
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 44
FORALL(i=0; i < input.length; i++){ if(bits[i]==1)
}
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 45
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 46
August 1, 2012 CSE 332 Data Abstractions, Summer 2012 47