作者physicsmm (Mark)
看板b93902HW
標題Re: [助教]雙班OS Project 2延期
時間Mon Dec 11 21:17:01 2006
※ 引述《shiing (!?)》之銘言:
: 有同學反應project2的題目有點問題。助教在出作業之時確實有些因素沒有考慮進去。
: 出矩陣相乘的意義在於有大量的I/O和計算要同時處理。
: 100*100的size太小和會導致multithread效率不彰和Strassen Algorithm會拖慢速度。
: 因此大家在寫作業可能會觀察到single thread的效率可能是最好的。
: 這次作業的核心意義在於讓大家了解到thread數量和系統效率的關係,
: 目的在於找出最好的辦法。
: 開thread的overhead太大,因此若矩陣size太小,將I/O與計算的部分overlap仍然可能效
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 能會輸給single thread。
^^^^^^^^^^^^^^^^^^^^^^^^^^
: 為了這個原因,我們將矩陣的size調大,最大到1000*1000。
: 我們的原則還是一樣的,希望大家能觀察thread的數量與系統效能的關係。
: 對於大部分已經做完的同學,我們願意說聲對不起,
: 臨時更改題目的規定的確是不好的行為
: 最後,若有任何問題,歡迎與助教們討論
經過我今天的奮戰發現不只如此,
如果矩陣太小,thread的加速效果的確不甚明顯。
但矩陣太大,運算時在記憶體中的offset會變大,也會蓋過thread的加速,
舉例來說:我今天code完全沒改,單單將我的變數陣列開大而已,
對相同100x100的測資而言就
慢了三倍。
也就是說我原先是宣告
int matrix1[100][100];
如今宣告
int matrix1[1000][1000];才改這樣程式就慢了三倍。
那麼更不能保證說多thread能夠勝過單一thread了。
所以由此可見程式勢必是要重寫。
而且我開的是二維陣列還算好,開三維的人不就死定了。
(這個記憶體offset的case可以給大家參考。)
助教,我真的很不希望上週奮戰三十幾小時的全成為空白。
我覺得ddio班代的建議很不錯,就是把1000x1000的case變成BONUS,
這樣原先的基本分也還有,而願意多花時間研究的同學,
也多得到一些分數。
或者您會考慮再把SPEC改回原來的100x100。
====
不過可能要煩請助教生兩種測資了。
也就是[ 100x100~1000x1000 ] 和[ 100x100以下 ]的兩種。
這篇文如果有人反對的話,也請推/噓提出來。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.247.132
→ physicsmm:po完我才想到,如果matrix改大後陣列的offset會影響mult 12/11 22:19
→ physicsmm:thread的結果,那是不是不要再改SPEC反而好? 12/11 22:20
→ physicsmm:反正兩者都會有問題存在,而100x100的版本大家都已經做 12/11 22:20
→ physicsmm:好了 12/11 22:20
→ physicsmm:請助教再考慮看看>"< 12/11 22:21