平行演算法期末報告

中山應數所科學計算組

陳家全

m8724624

 

動機:

由於另一門課有接觸到以SOR(Successive Over-Relaxation iteration)超鬆弛法來求Ax = b的解,SOR是以矩陣迭代求得收斂的近似解,計算量龐大,應該很適合作為平行處理的課題。

 

說明:

FDM(Finite Difference Method)是一種Harmonic, Poisson and Blending models微分方程的求解的方法。這個課題是用FDM的五點公式並套用SOR來迭代收斂求解。

Five-point scheme of FDM

 

 

 

導出的SOR迭代公式如下:

 

 

and w = 2/(1+ sin(&piH)).

 

按照迭代的程序,這是適用於單CPU的情況。在平行演算下,需對迭代程序做些調整。

 

 

< 將網格區分為黑點和白點 >

 

 

 

迭代程序:

先對黑點做迭代,即可求出黑點的新值,接著換白點迭代並取用新的黑點值計算。即黑點改用Jacobi計算,白點再用SOR迭代。(內部的起始值fi,j 皆取0

 

 

數據:

CPU

M=50

M=100

M=200

2

1

6

30

4

2

14

64

6

3

20

104

8

4

28

147

 

結論:

上表為第一個CPU從開始運算,傳遞及接收資料至結果收斂為止之時間。結果顯示CPU增加一倍,時間亦增加一倍。與預期的有出入,其原因可能在資料傳遞上所花費的時間,因各CPU需互相傳遞資料始可做下一步運算。故CPU增加,傳遞時間花費亦增加,因此Time = O( M )

 

原始程式碼