#Parrel programmong assigment2 ##HW2 #511557009 曾智謙 在 view 1 中,speedup 的成長是非線性的,當 thread_num 為 3 時,只有 1.62倍的加速比,甚至比當 thread_num 為 2 時還要低。然而,在 view 2 中,隨著 thread_num 的增加,speedup 則持續上升。   我們可以通過函式 mandel發現每個像素的值是由迴圈執行的次數所決定的。換言之,數值越大且越接近白色。我們可以從view1發現白色區域主要集中在中心位置,此區域相應的像素所需的計算時間較長,因此可以推測被分配到處理此區域的 thread 可能會成為效能瓶頸。   Q2 從下圖中可以發現,thread_num=3 時 thread 1 明顯花費時間多於其他 thread,thread_num=4 中也可發現 thread 1, 2 同樣明顯花費時間較多。 此測試結果與 Q1 的推測一致。(白色像素較多的地方花費時間較長)    Q3 我將每個 thread 的計算範圍改為 {image row index} % {thread id} == 0,以分散單一 thread 計算的區域,減少工作分配不均的可能性。  for (size_t i = args->threadId; i < args->height; i += args->numThreads) { mandelbrotSerial(args->x0, args->y0, args->x1, args->y1, args->width, args->height, i, 1, args->maxIterations, args->output); }  Q4 發現在8 thread 時,speedup 3.77X->3.57X 因為本工作站有4個核心和4個thread,如果使用8個thread去執行,反而會發生額外的context switch overhead。工作站是幾核心的話就最好使用多少thread。 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up