multi-threaded algorithm 3
DESCRIPTION
Multi-threaded Algorithm 3. Michael Tsai 2011/6/17. Multithreaded matrix multiplication. P-SQUARE-MATRIX-MULTIPLY(A,B) n= A.rows let C be a new n x n matrix parallel for i=1 to n parallel for j=1 to n for k=1 to n return C. - PowerPoint PPT PresentationTRANSCRIPT
Multi-threaded Algorithm 3
Michael Tsai2011/6/17
2
Multithreaded matrix multiplicationP-SQUARE-MATRIX-MULTIPLY(A,B)n=A.rowslet C be a new n x n matrixparallel for i=1 to n
parallel for j=1 to n
for k=1 to n
return C
𝑇 1(𝑛)=Θ (𝑛3 )
𝑇 ∞ (𝑛)=Θ ( log n )+Θ (log𝑛)+Θ (𝑛)=Θ(𝑛)
𝑇 1 (𝑛)𝑇 ∞ (𝑛 )
=Θ (𝑛3 )Θ (𝑛)
=Θ (𝑛2)
3
Divide-and-conquer Multithreaded Algorithm for Matrix Multiplication ( 勒勒長 )
C T
4
P-MATRIX-MULTIPLY-RECURSIVE(C,A,B)n=A.rowsif n==1
else let T be a new n x n matrixpartition A,B,C, and T into n/2 x n/2
submatrices (spawn P-MATRIX-MULTIPLY-RECURSIVE( spawn P-MATRIX-MULTIPLY-RECURSIVE(spawn P-MATRIX-MULTIPLY-RECURSIVE(spawn P-MATRIX-MULTIPLY-RECURSIVE(spawn P-MATRIX-MULTIPLY-RECURSIVE(spawn P-MATRIX-MULTIPLY-RECURSIVE(spawn P-MATRIX-MULTIPLY-RECURSIVE(P-MATRIX-MULTIPLY-RECURSIVE(syncparallel for i=1 to n
parallel for j=1 to n
𝑀 1 (𝑛)=8𝑀 1(𝑛2 )+Θ (𝑛2 )=Θ (𝑛3 )
𝑀∞ (𝑛)=𝑀∞(𝑛2 )+Θ ( log𝑛 )+Θ (log𝑛)=Θ ( log2𝑛)
𝑀 1 (𝑛)𝑀∞ (𝑛 )
=Θ (𝑛3 )Θ ( log2𝑛)
=Θ( 𝑛3
log2𝑛 )
5
How about Strassen’s method? Reading assignment: p.795-796.
Parallelism: , slightly less than the original recursive version!
6
Multithreaded Merge SortMerge-Sort’(A,p,r)if p<r
q=spawn MERGE-SORT’(A,p,q)MERGE-SORT’(A,q+1,r)syncMERGE(A,p,q,r) Θ(𝑛)
𝑀𝑆1′ (𝑛 )=2𝑀𝑆1
′ (𝑛2 )+Θ (𝑛 )=Θ (𝑛 log𝑛)
𝑀𝑆∞′ (𝑛 )=𝑀𝑆∞
′ (𝑛2 )+Θ (𝑛)=Θ (𝑛 )
Parallelism=
Merge() is the bottleneck!
A: Array to be sortedp and r: Start and end index of the range to be sorted
7
1. 挑出的中位數 x2. 找出中這個位置使得都 < x, 都 x
把 Merge 也用 Divide & Conquer 來解 !( 方便交給不同的 thread 去做 )
3. Copy x 到新地方 ( 根據 x 和
4. 開分身去 merge 和 , 及 和兩個區段
Base case: 和都是空的
8
Multithreaded MergeP-MERGE(T,,, ,,A,)
if exchange exchange exchange
if return
else
BINARY-SEARCH(T[],T, ,)
A[]=T[]spawn P-MERGE(T,,, ,,A,)P-MERGE(T,,, ,,A,)sync
T: Array to be mergedA: Array to save the merged result,, ,: Start and end index of the range to be merged: The index of the median in A
9
,
最糟的狀況下 , x 比所有的都大 要 merge 個元素
10
Multithreaded MergeP-MERGE(T,,, ,,A,)
if exchange exchange exchange
if return
else
BINARY-SEARCH(T[],T, ,)
A[]=T[]spawn P-MERGE(T,,, ,,A,)P-MERGE(T,,, ,,A,)sync
𝑃 𝑀∞ (𝑛 )=𝑃 𝑀∞( 3𝑛4 )+Θ (log𝑛)
Θ (log𝑛)
, 因為至少要 copy n elements
, 見課本 p.802
⇒𝑃𝑀 1 (𝑛)=Θ (𝑛)
11
P-MERGE-SORT(A,p,r,B,s)n=r-p+1if n==1
B[s]=A[p]else let T[1..n] be a new array
spawn P-MERGE-SORT(A,p,q,T,1)P-MERGE-SORT(A,q+1,r,T,q’+1)syncP-MERGE(T,1,q’,q’+1,n,B,s)
A: Array to be mergedp,r: Index of the range to be sortedB: Array to save the result
𝑃𝑀 𝑆1 (𝑛)=2𝑃𝑀𝑆1(𝑛2 )+𝑃 𝑀1 (𝑛)=2𝑃𝑀 𝑆1(𝑛2 )+Θ (𝑛)=Θ (𝑛 log𝑛)
𝑃𝑀 𝑆∞ (𝑛)=𝑃𝑀𝑆∞(𝑛2 )+𝑃𝑀∞ (𝑛)=𝑃𝑀𝑆∞(𝑛2 )+Θ (log 2𝑛)=Θ ( log3𝑛 )
Parallelism = Much better now!
12
怎麼自己學演算法 非常重要 這堂課沒辦法把所有”重要”的演算法都教完 但是希望過程中你已經建立了自己學習演算法的能力
準備研究所考試的時候可能會需要
13
我的經驗 我這一年來也跟著大家一起學習 資料結構 與 演算法 一些好方法 ( 自以為 ) 跟大家分享 :
1. 畫圖 , 用簡單的例子圖解步驟2. 先了解概念 ( 大方向 ), 不急著看複雜的數學
( 我常說 : 如果什麼都沒弄懂 , 先弄懂這個 )3. 一次了解一小部分就好 ( 模組化學習 ), 不急著弄懂所
有的部分4. 相信自己一定可以弄懂 ( 非常重要 )5. 不知道自己到底懂了沒 ? 用一些古怪的例子來試試
(boundary case)6. 練習自己看課本 ( 非常重要 )
14
期末考內容 & 型式 Closed book, 2 x A4 cheat sheets (double-
sided) 佔學期成績 30% 包含整學期上課內容 , 但以期中考過後的內容為主 180 minutes 題型與期中考類似 ( 是非 + 選擇 + 解釋 ) Extra office hour ??
15
再會 , 我教學生涯的第一班學生~
希望以後也能在選修課 / 專題課看到你們 ~
I’ll miss you
祝各位有個不太爆肝的期末 + 愉快的暑假